как мне хранить данные, поступающие в массив через Janrain, в разных переменных?

Я использую Janrain для пользователей своего веб-сайта, чтобы они могли войти на веб-сайт с любой учетной записью в социальных сетях. Все работает нормально с точки зрения авторизации, входа в систему и получения данных профиля пользователя, но это неправильно, когда дело доходит до хранения данных профиля в моей локальной базе данных. Например, адрес электронной почты пользователя, имя, дата рождения, фото и т. д.

После того, как пользователь авторизует приложение, мы получаем данные его профиля в формате ниже, и после получения этих данных я хочу сохранить их в разных переменных, чтобы их можно было легко вставить в базу данных.

$ email = [email]; // значение должно быть [email protected]

$ name = [displayname]; // значение должно быть Пранава Бхата

$ photo = [photo]; // значение должно быть https://graph.facebook.com/1190480706/picture?type=large

$ dob = [birthday]; // значение должно быть 1989-12-20

Код

<?php
/**
 * Copyright 2011
 * Janrain Inc.
 * All rights reserved.
 */
/**
 * Below is a very simple PHP 5 script that 
 * implements an Engage token URL to collect 
 * and output the results from auth_info.
 * The code below assumes you have the 
 * CURL HTTP fetching library with SSL and 
 * PHP JSON support.
 */

ob_start();
require_once('../library/engage.auth.lib.php');
$debug_array = array('Debug out:');

/**
 * For a production script it would be better 
 * to include (require_once) the apiKey in 
 * from a file outside the web root to 
 * enhance security.
 * 
 * Set your API key (secret) in this file.
 * The varable is $api_key
 */
require_once('engage-conf.php');

$token = $_POST['token'];
$format = ENGAGE_FORMAT_JSON;
$extended = $auth_info_extended;

$result = engage_auth_info($api_key, $token, $format, $extended);
if ($result === false) {
    $errors = engage_get_errors();
    foreach ($errors as $error=>$label) {
        $debug_array[] = 'Error: '.$error;
    }
} else {
/**
 * On a successful authentication store
 * the auth_info data in the variable
 * $auth_info_array
 */
    $array_out = true;
    $auth_info_array = engage_parse_result($result, $format, $array_out);
        //Put a printed copy in the debug.
    $debug_array[] = print_r($auth_info_array, true);
/**
 * This is the point to add code to do something with the Engage data.
 */
}

$errors = engage_get_errors(ENGAGE_ELABEL_ERROR);
foreach ($errors as $error=>$label) {
    $error_array[] = 'Error: '.$error;
}

/*
 * Uncomment lines below to get SDK level
 * debug data. Caution: This could result in 
 * revealing the api_key.
 */
//$debugs = engage_get_errors(ENGAGE_ELABEL_DEBUG);
//foreach ($debugs as $debug=>$label) {
//  $debug_array[] = 'Debug: '.$debug;
//}

$the_buffer = ob_get_contents();
if (!empty($the_buffer)) {
    $debug_array[] = 'Buffer: '.$the_buffer;
}
/* The variable (string) $the_debug will contain debug data. */
$the_debug = implode("\n", $debug_array);
$the_error = implode("\n", $error_array);
ob_end_clean();
?>
<html>
    <head>
        <title>Janrain Engage token URL example</title>
    </head>
    <body>

        <pre>
            <?php echo $the_error; ?>

            <?php echo $the_debug; ?>
        </pre>
    </body>
</html>

Вывод

Array
(
    [stat] => ok
    [profile] => Array
        (
            [providerName] => Facebook
            [identifier] => http://www.facebook.com/profile.php?id=1190480706
            [verifiedEmail] => [email protected]
            [preferredUsername] => PranavBhat's
            [displayName] => Pranav Bhat's
            [name] => Array
                (
                    [formatted] => Pranav Bhat's
                    [givenName] => Pranav
                    [familyName] => Bhat's
                )

            [email] => [email protected]
            [url] => http://www.facebook.com/bhats1989
            [photo] => https://graph.facebook.com/1190480706/picture?type=large
            [utcOffset] => 01:00
            [address] => Array
                (
                    [formatted] => London, United Kingdom
                    [type] => currentLocation
                )

            [birthday] => 1989-12-20
            [gender] => male
            [providerSpecifier] => facebook
        )

    [limited_data] => false
)

person colourtheweb    schedule 30.04.2013    source источник
comment
Какая у вас настоящая проблема? Мы не пишем для вас код бесплатно; вам нужно хотя бы попытаться решить проблему.   -  person Christian    schedule 30.04.2013
comment
@ChristianVarga Mate Я пробовал разные коды, в основном я хочу вынуть значение из массива и присвоить его разным переменным. Я не прошу вас писать код для меня, но просто предложение о том, что мне делать, чтобы он работал, будет полезным.   -  person colourtheweb    schedule 30.04.2013
comment
Не беспокойтесь, я вижу, вы отредактировали вопрос с помощью кода, это то, что мы ищем :). Нам нужно увидеть, что вы пробовали, прежде чем мы сможем помочь, иначе это действительно похоже на просьбу к кому-то написать код для вас.   -  person Christian    schedule 30.04.2013


Ответы (1)


Это просто ассоциативный массив, поэтому вы можете получить доступ к таким значениям (при условии, что выходные данные находятся в переменной с именем $array)

$email = $array['profile']['email'];
$name = $array['profile']['displayName'];

и Т. Д.

person Christian    schedule 30.04.2013
comment
Здорово, я обновил свой вопрос и записал код! - person colourtheweb; 30.04.2013
comment
@colourtheweb не беспокойтесь, у вас есть отсортированный код для базы данных или это следующий шаг? - person Christian; 30.04.2013
comment
код базы данных не имеет большого значения, это будет просто запрос на вставку, который я сделаю с помощью AJAX, а затем я назначу зарегистрированного пользователя для сеанса !! просто хотел разделить значение :) .. спасибо за помощь ура - person colourtheweb; 30.04.2013