Google+を使用してページ上のいくつかのリンクを共有していますが、パラメータを含むURLを共有しようとすると問題が発生します。例:
http://google.com?n=somethink&link=p/1393007&i=images/icons/gplus-16.png
このページのフィールドにこのURLを入力すると、次のようになります。
https://developers.google.com/+/plugins/share/
...そしてshare
ボタンをクリックすると、名前、写真、説明などのページに関する情報を表示できません。ただし、「png」の前のドットを削除すると、Googleはページに関するデータを表示します。
URLのどこかに'
記号を書き込んでも同じことが起こります。このエラーに関する情報がGoogleヘルプページに見つかりません。次のようなURLを使用すると機能します。
http://google.com?n='&link=p/1393007&i=images/icons/gplus-16.png
...しかし、それはあまりエレガントな解決策ではありません。
クリーンURLを書く方法は?
現在、G +共有は、ターゲットURL用のurlと言語コード用のhlの2つのパラメーターのみをサポートしています。
https://plus.google.com/share?url=http://www.stackoverflow.com
または、OpenGraphタグをページの先頭に追加して、次のような同じフィールドを指定することもできます:(まだテストされていません)
<meta property="og:title" content="..."/>
<meta property="og:image" content="..."/>
<meta property="og:description" content="..."/>
Google+共有リンクを介してGoogle+で共有するリンクをURLエンコードするようにしてください。
例:リンクを共有したい場合http://example.com?a=b&c=d
、最初のURLはリンクを次のようにエンコードします。
http%3A%2F%2Fexample.com%3Fa%3Db%26c%3Dd
これで、共有リンクを介してGoogle+でリンクを共有できます。
https://plus.google.com/share?url=http%3A%2F%2Fexample.com%3Fa%3Db%26c%3Dd
function googleplusbtn(url) {
sharelink = "https://plus.google.com/share?url="+url;
newwindow=window.open(sharelink,'name','height=400,width=600');
if (window.focus) {newwindow.focus()}
return false;
}
var url="www.google.com";
googleplusbtn(url);
共有リンクは、ネイティブクライアントアプリケーション、Flashアプリケーション、プライバシーに非常に敏感なサイト、および+1ボタンまたは共有ボタンを使用できない可能性のあるその他のサイトを対象としています。次のマークアップをサイトに追加すると、訪問者の共有ダイアログを開くシンプルなアイコンが含まれます。
<a href="https://plus.google.com/share?url=https://stackoverflow.com/questions/11868291/google-plus-share-and-parameters-in-url" onclick="javascript:window.open(this.href,
'', 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=600,width=600');return false;"><img
src="https://www.gstatic.com/images/icons/gplus-64.png" alt="Share on Google+"/></a>
答えは非常に貧弱です。ログインにはAPIを使用してから、コンテンツを共有する必要があります。
require_once 'google-api-php-client-master/src/Google/Client.php';
$client = new Google_Client();
$client->setClientId('YOUR_CLIENT_ID');
$client->setClientSecret('YOUR_CLIENT_SECRET');
$client->setRedirectUri('YOUR_REDIRECT_URI');
$plus = new Google_PlusService($client);
$authUrl = $client->createAuthUrl();
$visibleActions = array(
'http://schema.org/AddAction',
'http://schema.org/ReviewAction');
$authUrl .= '&request_visible_actions=' .
urlencode(implode(' ', $visibleActions));
print '<a href="' . $authUrl . '">Sign in with Google</a>';