2013-08-25 2 views
0

Я пытаюсь получить токен доступа в API Facebook.Получить пользовательский токен на Facebook API

Согласно this answer Мне нужно сначала создать ссылку https://www.facebook.com/dialog/oauth?client_id=[Your API KEY]&redirect_url=[Service that will handle Authentication]&scope=[Permissions you Need]. В моем случае это выглядит следующим образом:

https://www.facebook.com/dialog/oauth?client_id=559149457475028&redirect_uri=http://www.facebook.com/connect/login_success.html&scope=publish_stream 

После этого он должен перенаправлять на указанный URL-адрес с помощью строки запроса, содержащего код, который, в свою очередь, может быть использован, чтобы получить маркер доступа пользователя. Но в моем случае он перенаправляется на следующую страницу: http://www.facebook.com/connect/blank.html#_=_ без каких-либо запросов.

Почему? Как я могу получить код пользователя?

ответ

1

ваш redirect_uri не должен быть он должен быть URL из вашего приложения, которое будет обрабатывать аутентификации facebook

обновление

, если вы все еще развивается ваш сайт, и вы хотите, чтобы проверить его на вашем локальный хост можно использовать localhost/mydevwebsite/login_success/ иным образом использовать домен приложения вы работаете на myappdomain.com/loginsuccess/

+0

Почему я получаю голос? !!!, это вы OP – amdorra

+0

Это не я. Где я могу прочитать о создании этого URL-адреса? Могу ли я найти код или токен доступа по-другому? –

+0

, если вы все еще разрабатываете свой веб-сайт и хотите его протестировать на своем локальном хостинге, вы можете использовать 'localhost/mydevwebsite/login_success /' другой мудрый использовать домен для приложения, над которым вы работаете – amdorra

0
  1. Доступ параметр signed_request и предложит пользователь авторизовать приложение:

    $app_id = "YOUR_APP_ID"; 
    
    $canvas_page = "YOUR_CANVAS_PAGE_URL"; 
    
    $auth_url = "https://www.facebook.com/dialog/oauth?client_id=" 
        . $app_id . "&redirect_uri=" . urlencode($canvas_page); 
    
    $signed_request = $_REQUEST["signed_request"]; 
    
    list($encoded_sig, $payload) = explode('.', $signed_request, 2); 
    
    $data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true); 
    
    if (empty($data["user_id"])) { 
        echo("<script> top.location.href='" . $auth_url . "'</script>"); 
    } else { 
        echo ("Welcome User: " . $data["user_id"]); 
    } 
    
  2. Этого signed_request содержит всю чертову необходимую информацию (включая маркер доступа).

+0

У меня нет опыта работы в PHP. Можете ли вы перевести его на Python? –

+0

И у меня нет опыта с питоном, но я объясню вам концепцию. '$ signed_request = $ _REQUEST [" signed_request "];' step triies для извлечения переменной singed_request из url; если он найден, вы можете сохранить токен доступа и выполнить функции, иначе он перенаправит пользователя на auth_url для шага авторизации, и процесс повторяется. –

+1

Это может быть полезно: http://stackoverflow.com/questions/464040/how-are-post-and-get-variables-handled-in-python. Но я не уверен –

0

https://www.facebook.com/dialog/oauth?client_id=[Your API KEY] & REDIRECT_URL = [Service, который будет обрабатывать Authentication] & области действия = [необходимые разрешения].

+0

Добро пожаловать в переполнение стека! Хотя это может помочь ответить на вопрос, [было бы предпочтительнее] (http://meta.stackoverflow.com/q/8259) включить больше объяснений. –