Closed yoshi5170 closed 10 months ago
動的OGPが出ないURLの共有をお願いします
お疲れ様です。 以下にxシェアーするまでの流れと、ページへのリンクを提示しました。ログインしないとアスセスできないので、リンクをクリックすると最初にログイン画面の方に遷移すると思います。
画像を選択するページにアクセスしていただいて、そのページから使用したい画像を選択し、次にテキストを入力して、プレビューのボタンをクリックしていただくと、生成した画像の詳細ページに遷移しそのページにxのシェアーリンクがあります。
コメントありがとうございます。 自分で考えてみたのですが、Xのシェアリンクをどのように変更すればいいのかわからなかったので、アドバイスいただけると幸いです。
上記の例は励ましメッセージ(encouragement_messages)の方だと思うのですが、
励ましリクエストのshowページhttps://www.justbe-u.com/encouragement_requests/28
の部分のXのシェアリンクの変更も必要ですか?
また、現在励ましメッセージのxシェアーリンクはhttps://www.justbe-u.com/encouragement_messages/new?request_id=27
となっているのですが、励ましリクエストした人が見れる、みんなが作成してくれた励ましメッセージ一覧に遷移するようにしたいと考えています。この場合、動的OGPにするのは難しいでしょうか?
Xのシェアリンクは下記のためhttps://www.justbe-u.com/encouragement_messages/13で動的OGP設定しても反映されないですね
https://www.justbe-u.com/encouragement_messages/new?request_id=27 Xのシェアリンクで動的OGPが設定できるようにしましょうか
xのシェアーリンクを、https://www.justbe-u.com/encouragement_messages/new?request_id=27
ではなくhttps://www.justbe-u.com/encouragement_messages/13
に変更する必要があるということでしょうか?
励ましリクエスト(encouragement_request)のxシェアーのリンクは以下のようになっています。クエリパラメータのrequest_id
はencouragement_requestsのIDを渡しています。xシェアーされた投稿のリンクをクリックすると、励ましメッセージ(encouragement_message)を作成するページに飛んで、励ましメッセージを、励ましリクエストした相手に送ることができるようにしていく予定です。クエリパラメータのrequest_id
はencouragement_messagesのencouragement_request_idカラムの部分でencouragement_requestとencouragement_messageを紐づけるために必要です。
<div class="twitter font-bold text-sm text-white my-6 py-1 px-4 border-2 border-gray-500 rounded-lg bg-gray-500 hover:bg-gray-700 text-center w-1/3 md:w-1/4 lg:w-1/5 xl:w-1/7 mx-auto">
<%= link_to "https://x.com/share?url=https://www.justbe-u.com/encouragement_messages/new?request_id=#{@encouragement_request.id}&text= 励ましのメッセージを送る%0a%0a %23JustBeU %23自己受容", target: '_blank' do %>
<i class="fa-brands fa-x-twitter"></i>シェア
<% end %>
</div>
そんなに難しく考える必要はないですよ 下記のイメージでやれば大丈夫だと思います
Xにシェアするリンクから飛ぶページで動的なOGPを設定したら、無事に動的OGPが表示されるようななりました。 すごく複雑に考えていました。 本当にありがとうございました。
お疲れ様です。41期の高木と申します。
本リリースで追加予定の励ましリクエストと励ましメッセージの機能で、MiniMagickを使用して生成したメッセージカードをxシェアーするときに、OGP画像として表示されるようにしたいのですがデフォルトで設定しているwebアプリのロゴの画像が毎回表示されてしまいます。 開発環境でChromeの拡張機能のLocalhost Open Graph Debuggerを使用して、x投稿するときにOGPが表示されるかをテストして時は問題なく表示されました。 いろいろな方法を試したのですが、解決できなかったのでアドバイスをいただけると嬉しいです。
開発環境
Rails: 7.0.8 Ruby:3.2.2 Active Storage S3
機能の説明
励ましリクエストと励ましメッセージの2つの機能の説明をします。
機能の使い方としては以下のようなイメージです。
OGP画像の設定部分のコード
励ましリクエストと励ましメッセージの2つの機能の仕組みはほとんど同じなので、今回は励ましリクエストを例にとって説明します。 以下の実装は先輩の記事を参考にしました 【超簡単!】RailsアプリでOGPを動的に変更する方法
`<%= show_meta_tags %>`の部分でshow_meta_tagsメソッドを呼びだしてxのなのど設定をしています。 views/layoyts/application.html.erb
assign_meta_tags(options = {})
の引数に値が入っている場合は、指定された画像がOGP画像になり、何も引数が渡されていない場合はデフォルトのimage_url('ogp.png')
が表示される仕組みです。(image: options[:image].presence || image_url('ogp.png')
)helpers/application_helper.rb
controllers/encouragement_requests_controller.rb
assign_meta_tags
の部分でこの励まし詳細ページでxシェアーをすると、生成した画像がOGP画像になるように設定しています。それ以外のページでは、デフォルトの画像がOGP画像として表示されます。views/encouragement_requests/show.html.erb
config/storage.yml
試したこと
1. S3での画像のパブリックアクセスの部分のチェックを外す
2. S3のCORS設定の見直し(getメソッドを追加。独自ドメインと、herokuのドメインの両方とも追加。)
3. 画像のurlを取得するために、Active Storageのurl_forやrails_blob_pathやrails_blob_urlヘルパーの全てのパターンを試しましたがだめでした。
リダイレクトモード
4. twitter card validatorを使用してキャッシュをクリア
開発環境でのOGPを表示するテスト
問題なくOGP画像が表示されました
本番環境の場合
検証ツールでメタタグのtwitter:imageを確認したら、ちゃんと生成した画像への絶対パスのurlが表示されているのですが、xシェアで表示されるのはデフォルトのwebアプリのロゴの画像になってしまいます。
以下の変数
content
で提示されている画像のurlにブラウザーからアクセスすると、ちゃんと画像が表示されます。xシェアーするまでの流れ
https://github.com/yoshi5170/self_acceptance_journey/assets/122294799/68a4fc1a-c5d9-45f3-80da-d4591b95e2c4