register.json không đăng nhập người dùng hoặc trả lại phiên / mã thông báo / mật khẩu của người dùng


9

Tôi đã thử quá nhiều biến thể để liệt kê ở đây, nhưng điểm cơ bản là tôi không thể khiến người dùng đăng nhập ngay sau khi đăng ký qua Dịch vụ. Tôi đã thử cài đặt Drupal 7.33 mới chỉ với Dịch vụ 7.x.3.11 được bật và cài đặt tài nguyên mặc định được cung cấp bởi drupalgap 7.x.1.9

Khi tôi đăng ký bằng giao diện Drupal, người dùng được tạo, phiên mở và tôi vào trang hồ sơ của mình đăng nhập.

so với

Khi tôi gọi điểm cuối Dịch vụ /services/user/register.json, Drupal tạo tài khoản nhưng phiên không tồn tại. Xem ảnh chụp màn hình của tôi dưới đây.

nhập mô tả hình ảnh ở đây

Làm cách nào tôi có thể A. giữ phiên để duy trì các cuộc gọi tài nguyên dịch vụ tiếp theo HOẶC hook để thêm mật khẩu của người dùng hoặc tự động tạo lại vào phản hồi json để tôi có thể gửi lại chương trình /login.json theo cách lập trình không tồn tại)?

Câu hỏi này làm thế nào người dùng $ toàn cầu có thể khác nhau giữa giao diện Drupal và mô-đun Dịch vụ? mô tả vấn đề tương tự của tôi bằng cách sử dụng LoginToboggan.

Trong ảnh chụp màn hình của tôi, bạn sẽ thấy một dòng gỡ lỗi gọi là "gỡ lỗi đăng nhập". Nó xuất phát từ dòng 333 của "/sites/all/modules/logintoboggan/logintoboggan.module" nơi tôi đã thử tất cả những điều này nhưng không có kết quả ...

function logintoboggan_process_login($account, &$edit, $redirect = array()){
  global $user;

  $user = user_load($account->uid);

//watchdog('login debug', json_encode($account)); 
watchdog('login debug', json_encode($edit));

  //user_login_submit(array(), array('uid' => $account->uid));
  user_login_finalize($edit);

//  $user = user_load($account->uid);
//  $user->token = drupal_get_token('services'); // WE HAVE A TOKEN ALTHOUGH I DOUBT THIS WOULD WORK IN TERMS OF SESSION PERSISTANCE
//  user_login_finalize($edit);
//  module_invoke_all('hook_user_login');
//  module_invoke_all('tripchi_user_login');
//  module_invoke_all('logintoboggan_user_login');

@Clive, nó có chống lại các điều khoản để giúp đỡ trả tiền ở đây không?
ĂN

Đó là @EliATaylor, tôi vừa để lại bình luận. Chúng tôi chỉ quan tâm đến câu hỏi và câu trả lời ở đây , bất cứ điều gì khác (mời chào công việc được trả tiền, yêu cầu liên kết đến hướng dẫn hoặc về cơ bản hầu hết những điều khác xảy ra ngoài trang web) là một sự phân tâm từ đó và là điều chúng tôi bảo vệ chống lại. Tất cả những gì chúng tôi thực sự muốn là một câu hỏi hay (mà chúng tôi đã có ở đây, tuyệt vời) và một câu trả lời hay (hy vọng bạn sẽ nhận được)
Clive

bạn đã giúp tôi quá nhiều lần để phàn nàn ở đây, nhưng trời ơi @clive. tôi có thể ngoại tuyến cuộc trò chuyện đó và không làm lộn xộn màn hình này trừ khi chúng tôi giải quyết nó. Cũng ở đây, tôi thậm chí không có tiếng để sử dụng tính năng trò chuyện. Tôi có thể giao dịch một số từ StackOverflow không? Thậm chí không liên kết liên kết github của tôi với repo?
ĂN

1
Thậm chí không :) Khá đơn giản chúng tôi không phải là một diễn đàn hỗ trợ và bất cứ điều gì không phải là "câu hỏi" hay "câu trả lời" đều đi ngược lại sứ mệnh của chúng tôi là tạo ra một kho kiến ​​thức chất lượng cao về Drupal. Bất cứ điều gì cần thiết để trả lời câu hỏi cần phải có trong chính câu hỏi, bởi vì nếu không, câu hỏi sẽ trở nên vô dụng ngay khi các liên kết ngoài trang web bị chết hoặc vấn đề được khắc phục. Các quy tắc có thể có vẻ độc đoán hoặc thậm chí khắc nghiệt, nhưng chúng đã được chứng minh là cần thiết bởi mô hình Stack Exchange trong toàn bộ một số năm nay. Nếu bạn nhớ đó chỉ là Q + A ở đây, sẽ không bao giờ có vấn đề
Clive

Về đại diện của bạn để trò chuyện - bây giờ bạn rất thân với điều đó và tôi nghi ngờ câu hỏi này sẽ thu hút một vài câu hỏi vì nó được viết tốt. Họ sẽ đến với thời gian. Đó là một điều khác tôi nên đề cập, chúng tôi không có ý thức về thời gian ở đây như vậy - chúng tôi muốn trả lời các câu hỏi mất nhiều thời gian hơn nhưng theo cách chất lượng cao hơn so với các câu trả lời nhanh và cơ bản. Không phải chúng tôi khuyến khích mọi người chậm hoặc bất cứ điều gì tương tự, nhưng nếu bạn cần một thứ gì đó hoàn thành theo cách nhạy cảm với thời gian, thì không nên để cá cược của bạn về điều đó xảy ra ở đây, vì chúng tôi không tập trung vào nó
Clive

Câu trả lời:


1

Không chắc chắn nếu bạn cần câu trả lời vào thời điểm này (hoặc nếu đây chỉ là một), nhưng có vẻ như bạn đã "Yêu cầu xác minh e-mail khi khách truy cập tạo tài khoản" được bật?

Trong hình ảnh của bạn, trong cửa sổ thứ hai (nơi bạn thấy thông báo từ drupal_set_message ()), nó nói rằng một email đã được gửi và bạn sẽ cần phải làm theo hướng dẫn để có được thông báo đầy đủ.

Để tắt tính năng này, hãy điều hướng đến / admin / config / people / tài khoản và bỏ chọn Yêu cầu xác minh e-mail khi khách truy cập tạo tài khoản.

Nếu bạn nhìn vào bảng người dùng trong cơ sở dữ liệu, cột trạng thái sẽ hiển thị 1 cho bật, 0 cho vô hiệu hóa (có nghĩa là anh ta đã không nhấp vào liên kết trong email).

Hy vọng nó giúp!


Nó không hoạt động ngay cả khi bạn làm cho người dùng đã đăng ký hoạt động theo mặc định
Mohammed Gomma

0

Nó hoạt động tốt với tôi bạn có thể sử dụng mã sau đây

global $user;
$username=$data['email'];
$password=$data['pass'];
if ($user->uid) {
    // user is already logged in
    return services_error(t('Already logged in as @user.', array('@user' => $user->name)), 406);
}

// Check if account is active.
if (user_is_blocked($username)) {
    return services_error(t('The username %name has not been activated or is blocked.', array('%name' => $username)), 403);
}

// Emulate drupal native flood control: check for flood condition.
$flood_state = array();
if (variable_get('services_flood_control_enabled', TRUE)) {
    $flood_state = _user_resource_flood_control_precheck($username);
}

// Only authenticate if a flood condition was not detected.
if (empty($flood_state['flood_control_triggered'])) {
    $uid = user_authenticate($username, $password);
}
else {
    $uid = FALSE;
}

// Emulate drupal native flood control: register flood event, and throw error
// if a flood condition was previously detected
if (variable_get('services_flood_control_enabled', TRUE)) {
    $flood_state['uid'] = $uid;
    _user_resource_flood_control_postcheck($flood_state);
}

if ($uid) {
    $user = user_load($uid);
    if ($user->uid) {
        user_login_finalize();

        $return = new stdClass();
        $return->sessid = session_id();
        $return->session_name = session_name();
        $return->token = drupal_get_token('services');
        $account = clone $user;
        services_remove_user_data($account);
        $return->user = $account;

        return $return;
    }
}
watchdog('user', 'Invalid login attempt for %username.', array('%username' => $username));
return services_error(t('Wrong username or password.'), 401);

vượt qua id email và mật khẩu người dùng, nó sẽ trả về tất cả các giá trị cần thiết như id phiên, tên phiên, mã thông báo, uid người dùng


Nó tạo các phiên mới nhưng không có bản ghi nào trong bảng phiên được chèn, Vì vậy, vẫn không có phiên hợp lệ
Mohammed Gomma
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.