Titanium JIRA Archive
Appcelerator Community (AC)

[AC-966] ACS Users.resendConfirmation returns "You have to confirm your account before continuing"

GitHub Issuen/a
TypeBug
Priorityn/a
StatusResolved
ResolutionNeeds more info
Resolution Date2015-09-29T01:19:40.000+0000
Affected Version/sn/a
Fix Version/sn/a
Componentsn/a
Labelsacs
ReporterJoseph Sachs
AssigneeShak Hossain
Created2014-11-29T15:02:21.000+0000
Updated2016-03-08T07:37:17.000+0000

Description

This ACS call for resending a New Account's Confirmation Email (with the correct Email) returns "You have to confirm your account before continuing". Example:
Cloud.Users.resendConfirmation({
    email: email.value,
    confirmation_subject: L('resendConfEmailSubject'),
    confirmation_template: (Ti.Locale.currentLanguage === 'fr') ? 'newUser_fr' : 'newUser_en'
}, function (e) {
    if (e.success) {
        alert('Please check your email!');
        email.value = '';
    }
    else {
        error(e);
    }
});
Always returns an error saying: "You have to confirm your account before continuing"

Comments

  1. Shuo Liang 2014-12-01

    Hi, Just tried Cloud.Users.resendConfirmation() API, it works well as expect. Please tried this simple code, see whether your problem is still there.
       var Cloud = require('ti.cloud');
       var email = "";  // enter your email which need to confirm, this email should be a new email and not verify yet.
       
       var win = Ti.UI.createWindow({
       	backgroundColor: 'White'
       });
       
       var button = Ti.UI.createButton({
       	title: "resend Confirmation",
       	top:"100"
       });
       button.addEventListener("click", function(){
       	Cloud.Users.resendConfirmation({
       		email: email,
       		confirmation_subject: "Test for Confirmation Email"
       	}, function(e) {
       		if (e.success) {
               	alert('Please check your email!');
           	} else {
           		alert(e);
           	}
       	});
       });
       
       win.add(button);
       win.open();
       
  2. Joseph Sachs 2014-12-01

    I've tried to do the same, here are the steps I've done: 1- ACS Console Settings: Allow User Creation - Enable 2- Created an Account *with email* // even though I get the email, I'd like to resend another confirmation 3- Then I try to resend confirmation with the same email I created above:
       Cloud.Users.resendConfirmation({
               email: email, // same email used to create account from step 2 above
               confirmation_subject: "Test for Confirmation Email"
           }, function(e) {
               if (e.success) {
                   alert('Please check your email!');
               } else {
                   alert(e); // this line gets triggered
               }
           });
       
    I always get a reply thrown from line 8 above with the e.message = "You have to confirm your account before continuing" I'm using ti.Cloud version 3.2.7
  3. Shuo Liang 2014-12-03

    Please try to use curl command, see if that works well.
       curl -b cookies.txt -c cookies.txt "https://api.cloud.appcelerator.com/v1/users/resend_confirmation.json?key=<;you key>&pretty_json=true&email=<the email>" 
       
  4. Joseph Sachs 2014-12-04

    I think I know why... the session_id of the User when they create the account stores that session_id within the Module, Even if the Account needs confirmation. So for example:
       Alloy.Globals.Cloud.Users.create({
                       email: $.email.value,
                       username: $.user.value,
                       password: $.pass.value,
                       password_confirmation: $.pass.value,
                       confirmation_template: "fr" == Ti.Locale.currentLanguage ? "newUser_fr" : "newUser_en",
                   }, function(e) {
                       if (e.success) {
                           $.signed.visible = true; // has a button to resend the email conf.
                           Ti.API.info("Session ID: " + Alloy.Globals.Cloud.sessionId);
                           Alloy.Globals.Cloud.sessionId = null; // nulls it
                           Ti.API.info("Session ID: " + Alloy.Globals.Cloud.sessionId); // nulled
                       } else {
                           Alloy.Globals.NotifierFail.show(e.message);
                       }
                   });
       
    The result of this call is: [INFO] Session ID: wy1brdAq-7crtwZ2auj1SNU-zvM [INFO] Session ID: null So all calls afterwards don't go through because ACS.Cloud sets this user as not confirmed yet.
  5. Joseph Sachs 2014-12-04

    What I've also done is - After creating the account, I try to log the user out and even then, I get the same error message? If I close the App & reopen it... it works. So I'm guessing the session_id is always being sent with the newly created account (that needs activation), resulting in ACS always returning "Need to confirm account before proceeding". Closing the App, removes the session_id, however doing it manually: Alloy.Globals.Cloud.sessionId = null dosen't work.
  6. Papia Chowdhury 2015-09-07

    Hello, ACS was rebranded as ArrowDB. Please use the latest appcelerator environment with ArrowDB and let us know if this is still an issue for you. If you use [https://my.appcelerator.com](https://my.appcelerator.com/) and [https://cloud.appcelerator.com](https://web.appcelerator.com/product/migrate-app#acs_instructions) to manage ACS data and/or send push notifications, you will need to migrate your ACS data to Arrow DB. This process will not change your keys or require changes to (Titanium) client applications. Thanks.
  7. Joseph Sachs 2015-10-02

    UPDATE: The issue still exists in ArrowDB. So I have a new User that comes and register. Fills in their email and password. then a confirmation email is sent. Lets say that the email dosen't send (even though it does). Now the User is faced with a button that says: "Resend Confirmation Email". The Account is Not Confirmed yet, and would like to confirm it by having the Resend Confirmation Email to be resent, when they tap on that button, the trace out of that API is: {"success":false,"error":true,"code":401,"message":"You have to confirm your account before continuing."}

JSON Source