2016-09-07 13 views
1

UPDATE:なぜFacebookのログインがAndroidのphonegapで動作しないのですか?

は、私はほとんどの作業それを得ました。 私はjs.src = "//connect.facebook.net/en_US/sdk.js";からjs.src割り当てを変更するために必要な:js.src="https://connect.facebook.net/en_US/all.js";

しかし、私はログイン画面を入力したときに、今、私はこのエラーを持っている:

Can't Load URL: The domain of this URL isn't included in the app's domains. To be able to load this url, add all domains and subdomains of your app to the App Domains field in your app settings.

私はちょうどそれをしたが、同じエラーが指定されています。 アイデア

JavaScript SDKを使用してFacebookにログインしたアプリがあります。コードは、携帯電話のブラウザ上で、デスクトップやラップトップのブラウザで素晴らしい作品が、私はPhoneGapのを使用してアプリをインストールするとき、私は次のエラーを持っている:

Uncaught ReferenceError: FB is not defined 

誰もがこれで私を助けてくださいことはできますか?

私はこのことについて、複数のスレッドをスタックで読みましたが、どれも軽視されていないようです。

私のコードはこれです:

$(document).ready(function() { 
    (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"; 
    fjs.parentNode.insertBefore(js, fjs); 
    }(document, 'script', 'facebook-jssdk')); 

    window.fbAsyncInit = function() { 
    FB.init({ 
     appId: 'app_id_secret', 
     xfbml: true, 
     version: 'v2.7' 
    }); 
    }; 
    // This is called with the results from from FB.getLoginStatus(). 
    function statusChangeCallback(response) { 
    if (response.status === 'connected') { 
     // Logged into your app and Facebook. 
     getUserData(); 
    } else if (response.status === 'not_authorized') { 
     // The person is logged into Facebook, but not your app. 
     document.getElementById('status').innerHTML = 'Please log ' + 
     'into this app.'; 
    } else { 
     // The person is not logged into Facebook, so we're not sure if 
     // they are logged into this app or not. 
     document.getElementById('status').innerHTML = 'Please log ' + 
     'into Facebook.'; 
    } 
    } 

    function checkLoginState() { 
    FB.getLoginStatus(function(response) { 
     statusChangeCallback(response); 
    }); 
    } 

    $('.fb_login').on('click', function(e) { 
    e.preventDefault(); 
    FB.login(function(response) { 
     if (response.authResponse) { 
     FB.api('/me', { 
      fields: 'name, email, first_name, last_name' 
     }, function(response) {}); 
     } 
    }, { 
     scope: 'email,public_profile', 
     return_scopes: true 
    }); 
    }); 
}); 

私はまた、誰かがほぼ同じ質問をするこのリンクCan Facebook JS SDK work with Phonegap/Cordova?を見つけました。コード・プラグインを使用することが推奨されています。これは解決策ですか?はいの場合は、どちらが最善ですか?

+0

あなたはFBを定義していますか? –

+0

sdk.jsがロードされていないようです私は私の質問を更新しました。今私は別の問題を抱えているようです。 – Ionut

答えて

0

phonegap.facebook.inappbrowserというプラグインがあります。それはあなたに役立つと思います。

プラグインhereがあります。

まず、このようなあなたのファイルの頭の中でプラグインのスクリプトを追加:

<script type="text/javascript" src="js/phonegap.facebook.inappbrowser.js"></script> 

次にURLと権限をリダイレクトし、アプリケーションIDのための独自のカスタムパラメータを使用してそれを呼び出す:

// Settings 
FacebookInAppBrowser.settings.appId = '123456789'; 
FacebookInAppBrowser.settings.redirectUrl = 'http://example.com'; 
FacebookInAppBrowser.settings.permissions = 'email'; 

// Login(accessToken will be stored trough localStorage in 'accessToken'); 
FacebookInAppBrowser.login({ 
    send: function() { 
     console.log('login opened'); 
    }, 
    success: function(access_token) { 
     console.log('done, access token: ' + access_token); 
    }, 
    denied: function() { 
     console.log('user denied'); 
    }, 
    timeout: function(){ 
     console.log('a timeout has occurred, probably a bad internet connection'); 
    }, 
    complete: function(access_token) { 
     console.log('window closed'); 
     if(access_token) { 
      console.log(access_token); 
     } else { 
      console.log('no access token'); 
     } 
    }, 
    userInfo: function(userInfo) { 
     if(userInfo) { 
      console.log(JSON.stringify(userInfo)); 
     } else { 
      console.log('no user info'); 
     } 
    } 
}); 

また、Iをログインしたユーザーのfirst_nameとlast_nameを取得することを確認しました。プラグインには、ログイン後にデフォルトで設定されたプラグインはありません。しかし、get_urlというプラグインファイルの変数を変更することはできます。これに

var get_url = "https://graph.facebook.com/me?fields=email,name,gender&access_token=" + window.localStorage.getItem('facebookAccessToken'); 

::このことから、それを変更し

var get_url = "https://graph.facebook.com/me?fields=email,first_name,last_name,name,gender&access_token=" + window.localStorage.getItem('facebookAccessToken'); 
+1

ありがとうございます。それは完全に動作します。 – Ionut

関連する問題