ログイン手順の一環として、ユーザーが必要な権限を受け入れていることを確認しようとしています。彼らが受け入れたアクセス許可を取得し、それらが正しいかどうかを返す関数を作成しました。これが false を返す場合、loginUrl を作成して認証ダイアログに誘導し、追加のアクセス許可を受け入れることができるようにします。
// Declares the required permissions
$reqPerms = array(
'user_status',
'user_videos'
);
$permVer = verifyPermissions($reqPerms);
if (!$permVer) {
//$s = "'scope' => '" . implode("','", $reqPerms) . "' ";
$s = "'".implode("','", $reqPerms)."'";
echo $s." ";
$loginUrl = $facebook->getLoginUrl(array(
'scope' => $s,
'redirect_uri' => $fbconfig['appUrl']
));
print "<script type='text/javascript'>top.location.href = '$loginUrl';</script>";
これにより、次のエラーが発生します。
API Error Code: 100
API Error Description: Invalid parameter
Error Message: Unsupported scope: ''user_status''. Supported scopes: ads_management create_event create_note email export_stream friends_about_me friends_activities friends_birthday friends_checkins friends_education_history friends_events friends_games_activity friends_groups friends_hometown friends_interests friends_likes friends_location friends_notes friends_online_presence friends_photo_video_tags friends_photos friends_questions friends_relationship_details friends_relationships friends_religion_politics friends_status friends_subscriptions friends_videos friends_website friends_work_history manage_friendlists manage_notifications manage_pages offline_access photo_upload publish_actions publish_checkins publish_stream read_friendlists read_insights read_mailbox read_page_mailboxes read_requests read_stream rsvp_event share_item sms status_update user_about_me user_activities user_birthday user_checkins user_education_history user_events user_games_activity user_groups user_hometown user_interests user_likes user_location user_notes user_online_presence user_photo_video_tags user_photos user_questions user_relationship_details user_relationships user_religion_politics user_status user_subscriptions user_videos user_website user_work_history video_upload xmpp_login
$loginUrl
メソッドで権限「user_status」と「user_videos」を明示的に参照すると、自動的に生成される $loginUrl の隣に構築していたものをエコーアウトすることにしましたgetLoginUrl()
。
ログイン URL のスコープ部分が異なり、これは明らかに URL エンコーディングに関係しています。
構築された URL: scope=%27user_status%27%2C%27user_videos%27
生成された URL: scope=user_status&0=user_status&1=user_videos
関数に $reqPerms
ストレートを渡すと、次のようになります。getLoginUrl
scope=user_status%2Cuser_videos
私の質問は、URL の「スコープ」部分が正しく表示されるようにコードを編集するにはどうすればよいですか?