これは、FacebookアプリとOpenGraphで遊んでいる私の最初の試みです。私はdevelopers.facebook.comの例に従いました。ここまでは順調ですね。
私がやろうとしていることは次のとおりです。 特定の画像をクリックするときは、ユーザーがログに記録され、アプリが認証されていることを確認してください。ユーザーが認証を受けずにページを使用できるようにしたい。ユーザーが認証する必要がある特定のアクション(その画像をクリックする)は1つだけです。
- ユーザーがログインしてアプリを認証した場合は、ユーザーのストリームにメッセージを公開します。
- ユーザーがログインしていないか、アプリを認証していない場合、ユーザーが画像をクリックすると認証ダイアログが表示されます。承認されたら、ユーザーのストリームにメッセージを投稿します。
<a onclick="fb_login();" href="#" class="productlink1"><img id="product1" onclick="postCook()" alt="" src="img/fressko_heart_black.png"/></a> <a class="productlink2"><img id="product2" alt="" src="img/fressko_checked_black.png"/></a>
これは究極のコードではないことを私は知っています。特に、同時にトリガーされる2つのonclick=""があるためです。だから、私はそれに対する別の解決策が必要です。
ユーザーのフィードに投稿するJavaScript関数は次のようになります。
function postCook()
{
FB.api(
'/me/xxxxxx:cook',
'post',
{ recipe: 'http://www.zzzzzzz.com/test/' },
function(response) {
if (!response || response.error) {
alert('Error occured');
} else {
alert('Cook was successful! Action ID: ' + response.id);
}
});
}
ユーザーを認証するJavaScriptは次のようになります。
window.fbAsyncInit = function() {
FB.init({
appId : 'xxxxxx',
oauth : true,
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true // parse XFBML
});};
function fb_login(){
FB.login(function(response) {
if (response.authResponse) {
console.log('Welcome! Fetching your information.... ');
//console.log(response); // dump complete info
access_token = response.authResponse.accessToken; //get access token
user_id = response.authResponse.userID; //get FB UID
FB.api('/me', function(response) {
user_email = response.email; //get user email
// you can store this data into your database
});
} else {
//user hit cancel button
console.log('User cancelled login or did not fully authorize.');
}
}, {
scope: 'publish_stream'
});
}(function() {
var e = document.createElement('script');
e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
e.async = true;
document.getElementById('fb-root').appendChild(e);}());
誰かが私の問題に対する良い解決策を持っていますか?または正しい方向へのキック。私は通常PHPを使用することを好みますが、このミッションではJavaScriptが選択の武器のようです。
よろしく、