16
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

JavaScriptでTwitter、Facebookシェア用URLを作る

Last updated at Posted at 2019-04-08

概要

Twitter、Facebookなどのシェア機能はURLを叩くことができれば自前で実装することができる。

ベースとなるシェアURLにクエリパラメータを付与する形で実装する。

jsでクエリパラメータを付与する方法は色々な方法があるが、今回はURLSearchParamsを使用する。

URLSearchParamsはIE11だと使えないのには注意してほしい。(他のブラウザだとだいたい使用可能)

Can I use... Support tables for HTML5, CSS3, etc

URLSearchParamsについて

new URLSearchParamsでは、URLSearchParamsオブジェクトとして扱われるため、クエリパラメータの文字列のみ欲しい場合は.toString()してあげる必要がある。

const baseUrl = 'https://twitter.com/intent/tweet?';
const queryParam1 = ['key', 'value'];

// https://twitter.com/intent/tweet?key=value
const query = new URLSearchParams([queryParam1]).toString(); 

TwitterのシェアURLについて

ベースURL

https://twitter.com/intent/tweet?

クエリパラメータ

url=シェアするURL&text=ツイート本文&via=シェアするURLのアカウント&hashtags=ハッシュタグ&related=ツイートした後フォローさせたいアカウント

ハッシュタグを複数付けたい場合は「,」で区切ればOK。

&hashtags=ハッシュタグ1,ハッシュタグ2

実装

const baseUrl = 'https://twitter.com/intent/tweet?';
const text = ['text', 'ツイート本文'];
const hashtags = ['hashtags', ['ハッシュタグ1', 'ハッシュタグ2'].join(',')];
const url = ['url', location.href];
const via = ['via', 'tos'];
const query = new URLSearchParams([text, hashtags, url, via]).toString();
const shareUrl = `${baseUrl}${query}`;

FacebookのシェアURLについて

ベースURL

https://www.facebook.com/sharer/sharer.php?

クエリパラメータ

facebookの場合、urlのみ指定することができる。

u=シェアするURL

実装

URLだけなので正直そのまま文字列結合でもいいと思います。

const baseUrl = 'https://www.facebook.com/sharer/sharer.php?';
const url = ['u', location.href];
const query = new URLSearchParams([url]).toString();
const shareUrl = `${baseUrl}${query}`;

各種SNSのアイコン

Font Awesome Brand Iconsを使用すればOK。

npm、またはyarnで導入する場合はこちら。@fortawesome/free-brands-svg-icons - npm

$ npm i --save @fortawesome/free-brands-svg-icons

Or

$ yarn add @fortawesome/free-brands-svg-icons

まとめ

今回はURLSearchParamsを使って実装してみましたが、1回使い方がわかると結構便利でこれからも使って行きたくなりました。

ほかSNSもクエリパラメータさえわかれば同じような手法で実装できると思います。

参考URL

URLSearchParams - Web API | MDN

【ソーシャルサービス】シェアURLまとめ - Qiita

16
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?