質問編集履歴

5

微修正2

2019/05/23 07:41

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -318,7 +318,7 @@
318
318
 
319
319
  method: 'share',
320
320
 
321
- href: 'http://ranq-media.com/',
321
+ href: '',
322
322
 
323
323
  },
324
324
 

4

微修正

2019/05/23 07:41

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -302,7 +302,7 @@
302
302
 
303
303
  FB.init({
304
304
 
305
- appId : "1130175387185236",
305
+ appId : Appid,
306
306
 
307
307
  version : "v2.0"
308
308
 

3

公式開発者用ページからの追記(続)

2019/05/23 07:41

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -263,3 +263,101 @@
263
263
  );
264
264
 
265
265
  ```
266
+
267
+
268
+
269
+ 5月23日追記
270
+
271
+
272
+
273
+ 開発者用ページを見たところ、始めにFB.initを入れる必要があり、
274
+
275
+ またwindow.fbAsyncInit = function()はページを読み込んだ際のトリガーであることも分かりました。
276
+
277
+ しかし、公式ページを辿ってみても『シェアボタンが押された時にコールバック』という機能はなく、
278
+
279
+ 様々なページを見てみると自分でJavascript上にトリガーを新たに作って対応している方が多いようです。
280
+
281
+
282
+
283
+ しかし、その場合はFacebookのシェア数が表示されなくなってしまいます。
284
+
285
+ 欲張りかもしれませんが、なんとかシェア数をさせつつコールバックを行いたいです。
286
+
287
+
288
+
289
+ 公式シェアボタン内は最終的にはiframeで出力されるらしく、
290
+
291
+ 公式側で情報を公開していなければかなり難しいとは考えているのですが...。
292
+
293
+
294
+
295
+ 参考:https://developers.facebook.com/docs/javascript?locale=ja_JP
296
+
297
+
298
+
299
+ ```Javascript
300
+
301
+ window.fbAsyncInit = function() {
302
+
303
+ FB.init({
304
+
305
+ appId : "1130175387185236",
306
+
307
+ version : "v2.0"
308
+
309
+ });
310
+
311
+
312
+
313
+ document.getElementById('fb_share').onClick = function() {
314
+
315
+ FB.ui(
316
+
317
+ {
318
+
319
+ method: 'share',
320
+
321
+ href: 'http://ranq-media.com/',
322
+
323
+ },
324
+
325
+ // callback
326
+
327
+ function(response) {
328
+
329
+ if (response && !response.error_message) {
330
+
331
+ alert('Posting completed.');
332
+
333
+ } else {
334
+
335
+ alert('Error while posting.');
336
+
337
+ }
338
+
339
+ }
340
+
341
+ )
342
+
343
+ }
344
+
345
+ };
346
+
347
+
348
+
349
+ (function(d, s, id) {
350
+
351
+ var js, fjs = d.getElementsByTagName(s)[0];
352
+
353
+ if (d.getElementById(id)) return;
354
+
355
+ js = d.createElement(s); js.id = id;
356
+
357
+ js.src = "https://connect.facebook.net/ja_JP/sdk.js#xfbml=1&version=v3.3";
358
+
359
+ fjs.parentNode.insertBefore(js, fjs);
360
+
361
+ }(document, 'script', 'facebook-jssdk'));
362
+
363
+ ```

2

公式開発者用ページからの追記

2019/05/22 17:40

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -213,3 +213,53 @@
213
213
  <div class="fb-share-button" data-href="https://www.your-domain.com/your-page.html" data-layout="button_count"></div>
214
214
 
215
215
  ```
216
+
217
+
218
+
219
+ 5月22日追記
220
+
221
+
222
+
223
+ 開発者用ページに、以下のソースがありました。
224
+
225
+ が、ngrokを利用してアドレスを一致させ、<script>内に入れてもアラートすら鳴りません...。
226
+
227
+ 何かfunctionでトリガーが必要なのでしょうか?
228
+
229
+
230
+
231
+ https://developers.facebook.com/docs/javascript/reference/FB.ui
232
+
233
+
234
+
235
+ ```Javascript
236
+
237
+ FB.ui(
238
+
239
+ {
240
+
241
+ method: 'share',
242
+
243
+ href: 'https://developers.facebook.com/docs/',
244
+
245
+ },
246
+
247
+ // callback
248
+
249
+ function(response) {
250
+
251
+ if (response && !response.error_message) {
252
+
253
+ alert('Posting completed.');
254
+
255
+ } else {
256
+
257
+ alert('Error while posting.');
258
+
259
+ }
260
+
261
+ }
262
+
263
+ );
264
+
265
+ ```

1

解決策の追記

2019/05/22 04:25

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -119,3 +119,97 @@
119
119
  Windows 10
120
120
 
121
121
  Opera 60.0.3255.95
122
+
123
+
124
+
125
+ ---
126
+
127
+
128
+
129
+ 2019年5月21日追記
130
+
131
+ 以下のサイトのソースを参考に、ローカルで動かしましたが
132
+
133
+ appIDで登録したサイトの関係上、同サイト内のアドレスでないとシェアされたかどうかの
134
+
135
+ 挙動の確認ができないようです。
136
+
137
+
138
+
139
+ 下記ソースで「コールバック」アラートが出る方はいらっしゃいませんか?
140
+
141
+
142
+
143
+ [https://liginc.co.jp/web/service/facebook/35972](https://liginc.co.jp/web/service/facebook/35972)
144
+
145
+
146
+
147
+ ```HTML
148
+
149
+ <script type="text/javascript">
150
+
151
+ window.fbAsyncInit = function() {
152
+
153
+ FB.init({
154
+
155
+ appId : 'appId',
156
+
157
+ status : false, // check the login status upon init?
158
+
159
+ cookie : true, // set sessions cookies to allow your server to access the session?
160
+
161
+ xfbml : true // parse XFBML tags on this page?
162
+
163
+ });
164
+
165
+ };
166
+
167
+ function postToFeed(url, description) {
168
+
169
+ var obj = {
170
+
171
+ method: 'feed',
172
+
173
+ link: url,
174
+
175
+ picture: '',
176
+
177
+ name: '',
178
+
179
+ caption: '',
180
+
181
+ description: description
182
+
183
+ };
184
+
185
+
186
+
187
+ function callback(response) {
188
+
189
+ if (response && response.post_id) {
190
+
191
+ // コールバック後の処理
192
+
193
+ alert('コールバック');
194
+
195
+ }
196
+
197
+ }
198
+
199
+
200
+
201
+ FB.ui(obj, callback);
202
+
203
+ }
204
+
205
+ </script>
206
+
207
+ <script src='http://connect.facebook.net/ja_JP/all.js'></script>
208
+
209
+
210
+
211
+ <div id="fb-root"></div>
212
+
213
+ <div class="fb-share-button" data-href="https://www.your-domain.com/your-page.html" data-layout="button_count"></div>
214
+
215
+ ```