Backand:SignUp API 调用后,“userId”为空

Posted

技术标签:

【中文标题】Backand:SignUp API 调用后,“userId”为空【英文标题】:Backand: 'userId' is null after SignUp API call 【发布时间】:2016-04-28 08:47:44 【问题描述】:

我正在尝试使用此服务模块注册新用户(注册):

(function () 
    angular.module('starter')
    .service('ProfileModel', function ($http, Backand) 
        var service = this,
            baseUrl = '/1/objects/',
            objectName = 'users/';

        function getUrl() 
            return Backand.getApiUrl() + baseUrl + objectName;
        

        function getUrlForId(id) 
            return getUrl() + id;
        

        service.all = function () 
            return $http.get(getUrl());
        ;

        service.fetch = function (id) 
            return $http.get(getUrlForId(id));
        ;

        service.create = function (object) 
            return $http.post(getUrl(), object);
        ;

        service.update = function (id, object) 
            return $http.put(getUrlForId(id), object);
        ;

        service.delete = function (id) 
            return $http.delete(getUrlForId(id));
        ;



        service.currentUser = ;

        loadUserDetails();

        function loadUserDetails() 

            return Backand.getUserDetails()
                .then(function (data) 
                    service.currentUser.details = data;
                    if(data !== null)
                        service.currentUser.name = data.username;
                );

        

        service.getSocialProviders = function () 
            return Backand.getSocialProviders()
        ;

        service.socialSignin = function (provider) 
            Backand.setRunSignupAfterErrorInSigninSocial(false); //by default run sign-up if there is no sign in
            return Backand.socialSignin(provider)
                .then(function (response) 
                    loadUserDetails();
                    return response;
                );
        ;

        service.socialSignup = function (provider) 
            return Backand.socialSignUp(provider)
                .then(function (response) 
                  loadUserDetails();
                  return response;
                );
        ;

        service.signin = function (username, password) 
            return Backand.signin(username, password)
                .then(function (response) 
                    loadUserDetails();
                    return response;
                );
        ;

        service.signup = function (firstName, lastName, username, password, parameters) 
            return Backand.signup(firstName, lastName, username, password, password, parameters)
                .then(function (signUpResponse) 
                    return service.signin(username, password)
                        .then(function () 
                            return signUpResponse;
                        );

                );
        ;

        service.changePassword = function (oldPassword, newPassword) 
            return Backand.changePassword(oldPassword, newPassword)
        ;

        service.requestResetPassword = function (username) 
            return Backand.requestResetPassword(username)
        ;

        service.resetPassword = function (password, token) 
            return Backand.resetPassword(password, token)
        ;

        service.logout = function () 
            Backand.signout().then(function () 
                angular.copy(, service.currentUser);
            );
        ;

    );

());

 ProfileModel.signup($scope.user.title, 'last', $scope.user.email, $scope.user.password, parameters)
    .then(
        function(resp)
           console.log(resp); 
        
   ); 

我得到了

Object access_token: "epn2SW9XHgYj0RBtTv2tGHFmZATrSYqrA79qYnRckBVEaY8is-…m8B7Ko_NTRP-Salr0kh1ppCnOyQKnmzluCpmXOYd7BO7qAdkw", token_type: "bearer", expires_in: 86400, appName: "testthurst", username: "aero47@gmail.com"…
access_token: "epn2SW9XHgYj0RBtTv2tGHFmZATrSYqrA79qYnRckBVEaY8is-wPWU4sBrnhtNJ8UsqvOeE5_1j_CnTd-HzSfimw_3t4Y9iuOn2N74rb2CCPV0hBFXUOQG1-JLnyqW7kWOc43DRteswmwLqVLRcln6KuHThUeW0wwop2XNiP6NwTsqi-2uokD65QJzoLDWUGEeZkpwZYYwGkXLW7I79INkguVkBauzafOm-vmm8B7Ko_NTRP-Salr0kh1ppCnOyQKnmzluCpmXOYd7BO7qAdkw"
appName: "testthurst"
expires_in: 86400
firstName: "TestUser"
fullName:"TestUser last"
lastName:"last"
regId:
374601
role:"User"
token_type:"bearer"
userId:null

顺便说一下,用户出现在“注册用户”表中,但未出现在“对象”部分的“用户”表中。

当“userId”为空时,我总是得到相同的结果。 有谁知道我为什么会收到这个错误?

【问题讨论】:

【参考方案1】:

当匿名访问关闭或更改为只读时,您需要使用管理员访问权限在“创建我的应用用户”操作中进行调用。

解决方案是在服务器端操作中使用管理员权限。要添加管理员权限,您可以使用基本的 auth Authorization 标头。

完整的答案在这里:question 36169490

【讨论】:

我的意思是我无法获得有效的 userId。 这种情况有时会发生,但并非总是如此。

以上是关于Backand:SignUp API 调用后,“userId”为空的主要内容,如果未能解决你的问题,请参考以下文章

Backand - 没有“Access-Control-Allow-Origin”标头

如何调用 Web API?我已经创建了我的 SIGNUP 页面,但我不知道如何在按钮单击事件中调用 Web api

如果通过 API 创建,Backand 用户对象不与自定义用户对象关联

Backand 的 S3 API:上传到美国标准以外的地区

使用 Backand REST API 进行查询

如何从 Backand 上的表中删除多行?