Yii 2 Support for Social Networks
Twitter
// Twitter: Share a link
$curUri = Html::encode(Yii::$app->params['companyWebsite'].Yii::$app->request->getUrl());
echo '<a href="https://twitter.com/share" class="twitter-share-button" data-url="'.$curUri.'">Tweet</a>';
echo Html::script(
"!function(d,s,id){
  var js, fjs=d.getElementsByTagName(s)[0], p=/^http:/.test(d.location) ? 'http' : 'https' ;
 if(!d.getElementById(id)){
   js=d.createElement(s);
   js.id=id; 
   js.src=p+'://platform.twitter.com/widgets.js';
   fjs.parentNode.insertBefore(js,fjs);
 }
}(document, 'script', 'twitter-wjs');"
);
echo "\n\n";
LinkedIn
// LinkedIn Share button
$curUri = Html::encode(Yii::$app->params['companyWebsite'].Yii::$app->request->getUrl());
echo '<script src="//platform.linkedin.com/in.js" type="text/javascript"> lang: en_US</script>';
echo '<script type="IN/Share" data-url="'.$curUri.'" data-counter="right"></script>';
Pinterest
// Pinterest Pin-it button
$curUri = Html::encode(Yii::$app->params['companyWebsite'].Yii::$app->request->getUrl());
echo '<a data-pin-do="buttonPin" data-pin-color="red" data-pin-count="beside" 
      href="https://www.pinterest.com/pin/create/button/?url='.$curUri.'&media='.$curUriImg.'&description='.strip_tags($model['title']).'">
      <img src="//assets.pinterest.com/images/pidgets/pinit_fg_en_rect_red_20.png" /></a>';
echo '<script async defer src="//assets.pinterest.com/js/pinit.js"></script>';
Google+
$curUri = Html::encode(Yii::$app->params['companyWebsite'].Yii::$app->request->getUrl());
 
// Google+ G+1 button
//echo '<!-- Google+ G+1 button (STATIC) -->';
// Place this tag in your head or just before your close body tag.
//echo '<script src="https://apis.google.com/js/platform.js" async defer></script>';
// Place this tag where you want the +1 button to render. 
//echo '<div class="g-plusone" data-size="medium" data-annotation="inline" data-width="100"></div>';  
 
echo '<!-- Google+ G+1 button (DYNAMIC) -->';
// Place this tag where you want the +1 button to render.
echo '<div class="g-plusone" data-size="medium" data-annotation="inline" data-width="100" data-href="'.$curUri.'"></div>'; 
// Place this tag after the last +1 button tag
echo Html::script("
  (function() {
    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
    po.src = 'https://apis.google.com/js/platform.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
  })();");  
Facebook

Step 1: Include the JavaScript SDK on your page once, ideally right after the opening <body> tag.

<!-- Load Facebook SDK for JavaScript -->
<div id="fb-root"></div>
<script>(function(d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) return;
  js = d.createElement(s); js.id = id;
  js.src = "//connect.facebook.net/en_US/sdk.js#xfbml=1&version=v2.6";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>

Step 2: Place this code wherever you want the plugin to appear on your page.

<!-- Your like button code -->
<div class="fb-like" 
   data-href="https://www.acme.com" 
   data-layout="button_count" 
   data-action="like" 
   data-show-faces="true" 
   data-share="true">
</div>

Alternatively, when using iframe:

<!-- Your like button code -->
<iframe src="https://www.facebook.com/plugins/like.php?href=https%3A%2F%2Fwww.audina.net&width=124&layout=button_count&action=like&show_faces=true&share=true&height=46&appId" width="124" height="46" style="border:none;overflow:hidden" scrolling="no" frameborder="0" allowTransparency="true"></iframe>

Custom Metatags in Views

You need the following metatags for the pages being generated:

<html>
  <head>
  <title>Your Website Title</title>
    <!-- You can use open graph tags to customize link previews.
    Learn more: https://developers.facebook.com/docs/sharing/webmasters -->
	<meta property="og:url"           content="http://www.your-domain.com/your-page.html" />
	<meta property="og:type"          content="website" />
	<meta property="og:title"         content="Your Website Title" />
	<meta property="og:description"   content="Your description" />
	<meta property="og:image"         content="http://www.your-domain.com/path/image.jpg" />
  </head>
  <body>
  ...
  </body>
</html>  

In Yii, these meta tags have to be inserted in the required view:

$curUri = Html::encode(Yii::$app->params['companyWebsite'].Yii::$app->request->getUrl());
$this->registerMetaTag(['property' => 'og:url',         'content' => $curUri]);
$this->registerMetaTag(['property' => 'og:type',        'content' => 'article']);
$this->registerMetaTag(['property' => 'og:title',       'content' => Html::encode($this->title)]);
$this->registerMetaTag(['property' => 'og:description', 'content' => strip_tags($model['intro_text'])]);
$this->registerMetaTag(['property' => 'og:image',       
  'content' => Html::encode(Yii::$app->params['companyWebsite'] . 
                 Yii::$app->urlManagerBackend->createUrl('').'media/'.$model['main_image']
               )]);
echo "\n\n";
 
// Load Facebook SDK for JavaScript
echo '<!-- Load Facebook SDK for JavaScript -->
      <div id="fb-root"></div>
        <script>(function(d, s, id) {
          var js, fjs = d.getElementsByTagName(s)[0];
          if (d.getElementById(id)) return;
          js = d.createElement(s); js.id = id;
          js.src = "//connect.facebook.net/en_US/sdk.js#xfbml=1&version=v2.6";
          fjs.parentNode.insertBefore(js, fjs);
        }(document, "script", "facebook-jssdk"));
      </script>';
echo "\n\n";
 
// Facebook 'Like' button code
echo '<!-- Facebook Like button code -->
      <div class="fb-like" 
           data-href="' . $curUri . '" 
           data-layout="button_count" 
           data-action="like" 
           data-show-faces="true" 
           data-share="true">
      </div>';
echo "\n\n";

Custom Metatags in Controllers

Alternatively, you can automatically add it to each view. First, add it to your controller, or create your own extended version of Controller, such as MyController:

class MyController extends Controller
{    
    public function beforeAction($event)
    {
      $this->view->title = Yii::$app->params['pageTitle'];
 
      // Get customized meta tags (keywords, author, etc.) from the params config file as a default.
      \Yii::$app->view->registerMetaTag(Yii::$app->params['pageDefaultDescription'], "default_description");
      \Yii::$app->view->registerMetaTag(Yii::$app->params['pageDefaultKeywords'],    "default_keywords");
      \Yii::$app->view->registerMetaTag(Yii::$app->params['pageDefaultAuthor'],      "default_author");
 
      // Open Graph Tags
      \Yii::$app->view->registerMetaTag(Yii::$app->params['pageDefaultOG_Description'], "default_og_description");
      \Yii::$app->view->registerMetaTag(Yii::$app->params['pageDefaultOG_SiteName'],    "default_og_sitename");
      \Yii::$app->view->registerMetaTag(Yii::$app->params['pageDefaultOG_Title'],       "default_og_title");
      \Yii::$app->view->registerMetaTag(Yii::$app->params['pageDefaultOG_Type'],        "default_og_type");
 
      return parent::beforeAction($event);
    }
} 

Any new controllers created would extend MyController (instead of Controller), to get the defaults meta tags attached automatically.

If you need to customize a meta tag in some actions, you can override it:

class FancyController extends MyController
{
  ...
  public function actionIndex()
  {
      // Replace the default value for 'description'
      \Yii::$app->view->registerMetaTag([
          'name'    => 'description',
          'content' => 'A custom description for Index view',
          'id'      => 'main_index'
        ],
        'main_index'
      ); 
 
      return $this->render('index');
  }
}

Source: Stackoverflow: Customer Meta Tags in Yii2