0

ウェブサイトで PHP を使用して Facebook アプリを作成しました。私のウェブサイトでこのアプリケーションを使用するには、ユーザーは Facebook 認証を使用してログインする必要があります。

このアプリは基本的に、ユーザーが自分のウォールにデフォルトのコメントを投稿できるようにします。私の Facebook プロフィール アカウントを使用すると正常に動作しますが、友人に私のサイトを使用するように依頼すると、次のエラーが表示されます - 「Uncaught OAuthException: (#200) The user has not Authorized the application to perform this action throw in」

これまでに見つけた問題の唯一の解決策は、次の URL を入力することです -

https://www.facebook.com/login.php?api_key=API_KEY&cancel_url=http://www.magimagi.com&next=http://magimagi.com/login/uploadtopage2.php&fbconnect=1&return_session=1&session_version=3&v=1.0&display=page&req_perms=user_about_me,user_birthday,publish_stream,offline_access

ユーザーがクリックするためのリンクをアプリに作成したくありません。代わりに、Web サイトに既にある PHP コードにリンクを統合したいと考えています。

ここに私が持っているサンプルPHPコードがあります

/ Get User ID
$user = $facebook->getUser();

if ($user) {
try {
$user_profile = $facebook->api('/me');
} catch (FacebookApiException $e) {
error_log($e);
$user = null;
}
}
if ($user) {
$logoutUrl = $facebook->getLogoutUrl();
} else {
$loginUrl = $facebook->getLoginUrl(   array(
'scope' => 'publish_stream'
));
}

これはHTMLです

<form id="selectFriend" name="selectFriend" method="post">
<label for="Friend">Friend:</label>
<select id="friend" name="friend">
<?php 
foreach($user_friends['data'] as $f){
echo '<option value="'.$f['id'].'">'.$f['name'] .'</option>';
} 
?>
</select>
<label for="URL">URL:</label>
<input id="link" name="link">
<input id="message" name="message">
<input type="submit" name="submit" id="submit" value="Send!">

そこにあるほとんどすべてのドキュメントなどを読みました...しかし、残念ながら私は管理できませんでした。

他の人のプロファイルでは機能していないのに、なぜ自分のプロファイルを使用して機能しているのか疑問に思っています。

私はまだ初心者なので、あなたの侮辱を保存してください!

4

1 に答える 1

0

私が見る限り、あなたのコードはかなり古くなっています-認証ダイアログの呼び出しで使用しているパラメータ(具体的にreq_permsは)は2011年10月に非推奨になりました-認証ダイアログにリダイレクトする現在の(手動の)方法は次のとおりです:

https://www.facebook.com/dialog/oauth?
    client_id=YOUR_APP_ID
   &redirect_uri=YOUR_REDIRECT_URI
   &scope=COMMA_SEPARATED_LIST_OF_PERMISSION_NAMES
   &state=SOME_ARBITRARY_BUT_UNIQUE_STRING

PHP SDKのgetLoginUrl()メソッドはそこにユーザーを送信し、コードがcode返されたものを処理access_tokenすると、ユーザーに代わって呼び出しを行うために使用できるを取得します。

サーバー側の完全なフローについては、https://developers.facebook.com/docs/authentication/server-side/を参照してください。

于 2012-06-13T15:37:16.183 に答える