这是indexloc提供的服务,不要输入任何密码
Skip to content

Onedrive token cannot be read (headless setup): Couldn't decode response: invalid character 'e' looking for beginning of value #8688

@naymore

Description

@naymore

What is the problem you are having with rclone?

Configuring rclone with Onedrive Personal on a device that does not have a browser does not work.
The token can successfully be generated on the device with browser and it can be copied at full length in the headless device's terminal.
Also the token can be inspected using jwt.io for example --> it contains a json with an embedded access_token.

What is your rclone version (output from rclone version)

Tested both latest stable version 1.70.3
and 1.71.0-beta.8897.5e539c6a7-linux-amd64

Which OS you are using and how many bits (e.g. Windows 7, 64 bit)

Headless device: Linux, AMD64
Browser device: Windows 10, AMD64

Which cloud storage system are you using? (e.g. Google Drive)

Onedrive Personal (with subscription)

The command you were trying to run (e.g. rclone copy /tmp remote:tmp)

rclone config

A log from the command with the -vv flag (e.g. output from rclone -vv copy /tmp remote:tmp)

rsom@tinytc:~/rclone-v1.71.0-beta.8897.5e539c6a7-linux-amd64$ ./rclone config -vv
2025/07/15 19:05:48 DEBUG : rclone: Version "v1.71.0-beta.8897.5e539c6a7" starting with parameters ["./rclone" "config" "-vv"]
2025/07/15 19:05:48 DEBUG : Using config file from "/home/rsom/.config/rclone/rclone.conf"
No remotes found, make a new one?
n) New remote
s) Set configuration password
q) Quit config
n/s/q> n

Enter name for new remote.
name> onedrive_personal

Option Storage.
Type of storage to configure.
Choose a number from below, or type in your own value.
[...]
36 / Microsoft Azure Blob Storage
   \ (azureblob)
37 / Microsoft Azure Files
   \ (azurefiles)
38 / Microsoft OneDrive
   \ (onedrive)
[...]
Storage> 38

2025/07/15 19:06:01 DEBUG : onedrive_personal: config in: state="*all", result=""
2025/07/15 19:06:01 DEBUG : onedrive_personal: config out: out=&{State:*all-set,0,false Option: OAuth:<nil> Error: Result:}, err=<nil>
2025/07/15 19:06:01 DEBUG : onedrive_personal: config: reading config parameter "client_id"
Option client_id.
OAuth Client Id.
Leave blank normally.
Enter a value. Press Enter to leave empty.
client_id> XXX

2025/07/15 19:06:15 DEBUG : onedrive_personal: config in: state="*all-set,0,false", result="XXX"
2025/07/15 19:06:15 DEBUG : Saving config "client_id" in section "onedrive_personal" of the config file
2025/07/15 19:06:15 DEBUG : onedrive_personal: config out: out=&{State:*all,1,false Option:<nil> OAuth:<nil> Error: Result:}, err=<nil>
2025/07/15 19:06:15 DEBUG : onedrive_personal: config in: state="*all,1,false", result=""
2025/07/15 19:06:15 DEBUG : onedrive_personal: config out: out=&{State:*all-set,1,false Option: OAuth:<nil> Error: Result:}, err=<nil>
2025/07/15 19:06:15 DEBUG : onedrive_personal: config: reading config parameter "client_secret"
Option client_secret.
OAuth Client Secret.
Leave blank normally.
Enter a value. Press Enter to leave empty.
client_secret> XXX

2025/07/15 19:06:25 DEBUG : onedrive_personal: config in: state="*all-set,1,false", result="XXX"
2025/07/15 19:06:25 DEBUG : Saving config "client_secret" in section "onedrive_personal" of the config file
2025/07/15 19:06:25 DEBUG : onedrive_personal: config out: out=&{State:*all,2,false Option:<nil> OAuth:<nil> Error: Result:}, err=<nil>
2025/07/15 19:06:25 DEBUG : onedrive_personal: config in: state="*all,2,false", result=""
2025/07/15 19:06:25 DEBUG : onedrive_personal: config out: out=&{State:*all,3,false Option:<nil> OAuth:<nil> Error: Result:}, err=<nil>
2025/07/15 19:06:25 DEBUG : onedrive_personal: config in: state="*all,3,false", result=""
2025/07/15 19:06:25 DEBUG : onedrive_personal: config out: out=&{State:*all,4,false Option:<nil> OAuth:<nil> Error: Result:}, err=<nil>
2025/07/15 19:06:25 DEBUG : onedrive_personal: config in: state="*all,4,false", result=""
2025/07/15 19:06:25 DEBUG : onedrive_personal: config out: out=&{State:*all,5,false Option:<nil> OAuth:<nil> Error: Result:}, err=<nil>
2025/07/15 19:06:25 DEBUG : onedrive_personal: config in: state="*all,5,false", result=""
2025/07/15 19:06:25 DEBUG : onedrive_personal: config out: out=&{State:*all,6,false Option:<nil> OAuth:<nil> Error: Result:}, err=<nil>
2025/07/15 19:06:25 DEBUG : onedrive_personal: config in: state="*all,6,false", result=""
2025/07/15 19:06:25 DEBUG : onedrive_personal: config out: out=&{State:*all-set,6,false Option:global OAuth:<nil> Error: Result:}, err=<nil>
2025/07/15 19:06:25 DEBUG : onedrive_personal: config: reading config parameter "region"
Option region.
Choose national cloud region for OneDrive.
Choose a number from below, or type in your own value of type string.
Press Enter for the default (global).
 1 / Microsoft Cloud Global
   \ (global)
 2 / Microsoft Cloud for US Government
   \ (us)
 3 / Microsoft Cloud Germany (deprecated - try global region first).
   \ (de)
 4 / Azure and Office 365 operated by Vnet Group in China
   \ (cn)
region> 1

2025/07/15 19:06:26 DEBUG : onedrive_personal: config in: state="*all-set,6,false", result="global"
2025/07/15 19:06:26 DEBUG : onedrive_personal: config out: out=&{State:*all,7,false Option:<nil> OAuth:<nil> Error: Result:}, err=<nil>
2025/07/15 19:06:26 DEBUG : onedrive_personal: config in: state="*all,7,false", result=""
2025/07/15 19:06:26 DEBUG : onedrive_personal: config out: out=&{State:*all,8,false Option:<nil> OAuth:<nil> Error: Result:}, err=<nil>
2025/07/15 19:06:26 DEBUG : onedrive_personal: config in: state="*all,8,false", result=""
2025/07/15 19:06:26 DEBUG : onedrive_personal: config out: out=&{State:*all,9,false Option:<nil> OAuth:<nil> Error: Result:}, err=<nil>
2025/07/15 19:06:26 DEBUG : onedrive_personal: config in: state="*all,9,false", result=""
2025/07/15 19:06:26 DEBUG : onedrive_personal: config out: out=&{State:*all,10,false Option:<nil> OAuth:<nil> Error: Result:}, err=<nil>
2025/07/15 19:06:26 DEBUG : onedrive_personal: config in: state="*all,10,false", result=""
2025/07/15 19:06:26 DEBUG : onedrive_personal: config out: out=&{State:*all,11,false Option:<nil> OAuth:<nil> Error: Result:}, err=<nil>
2025/07/15 19:06:26 DEBUG : onedrive_personal: config in: state="*all,11,false", result=""
2025/07/15 19:06:26 DEBUG : onedrive_personal: config out: out=&{State:*all,12,false Option:<nil> OAuth:<nil> Error: Result:}, err=<nil>
2025/07/15 19:06:26 DEBUG : onedrive_personal: config in: state="*all,12,false", result=""
2025/07/15 19:06:26 DEBUG : onedrive_personal: config out: out=&{State:*all,13,false Option:<nil> OAuth:<nil> Error: Result:}, err=<nil>
2025/07/15 19:06:26 DEBUG : onedrive_personal: config in: state="*all,13,false", result=""
2025/07/15 19:06:26 DEBUG : onedrive_personal: config out: out=&{State:*all-set,13,false Option: OAuth:<nil> Error: Result:}, err=<nil>
2025/07/15 19:06:26 DEBUG : onedrive_personal: config: reading config parameter "tenant"
Option tenant.
ID of the service principal's tenant. Also called its directory ID.
Set this if using
- Client Credential flow
Enter a value. Press Enter to leave empty.
tenant> XXX

2025/07/15 19:06:33 DEBUG : onedrive_personal: config in: state="*all-set,13,false", result="XXX"
2025/07/15 19:06:33 DEBUG : Saving config "tenant" in section "onedrive_personal" of the config file
2025/07/15 19:06:33 DEBUG : onedrive_personal: config out: out=&{State:*all,14,false Option:<nil> OAuth:<nil> Error: Result:}, err=<nil>
2025/07/15 19:06:33 DEBUG : onedrive_personal: config in: state="*all,14,false", result=""
2025/07/15 19:06:33 DEBUG : onedrive_personal: config out: out=&{State:*all,15,false Option:<nil> OAuth:<nil> Error: Result:}, err=<nil>
2025/07/15 19:06:33 DEBUG : onedrive_personal: config in: state="*all,15,false", result=""
2025/07/15 19:06:33 DEBUG : onedrive_personal: config out: out=&{State:*all,16,false Option:<nil> OAuth:<nil> Error: Result:}, err=<nil>
2025/07/15 19:06:33 DEBUG : onedrive_personal: config in: state="*all,16,false", result=""
2025/07/15 19:06:33 DEBUG : onedrive_personal: config out: out=&{State:*all,17,false Option:<nil> OAuth:<nil> Error: Result:}, err=<nil>
2025/07/15 19:06:33 DEBUG : onedrive_personal: config in: state="*all,17,false", result=""
2025/07/15 19:06:33 DEBUG : onedrive_personal: config out: out=&{State:*all,18,false Option:<nil> OAuth:<nil> Error: Result:}, err=<nil>
2025/07/15 19:06:33 DEBUG : onedrive_personal: config in: state="*all,18,false", result=""
2025/07/15 19:06:33 DEBUG : onedrive_personal: config out: out=&{State:*all,19,false Option:<nil> OAuth:<nil> Error: Result:}, err=<nil>
2025/07/15 19:06:33 DEBUG : onedrive_personal: config in: state="*all,19,false", result=""
2025/07/15 19:06:33 DEBUG : onedrive_personal: config out: out=&{State:*all,20,false Option:<nil> OAuth:<nil> Error: Result:}, err=<nil>
2025/07/15 19:06:33 DEBUG : onedrive_personal: config in: state="*all,20,false", result=""
2025/07/15 19:06:33 DEBUG : onedrive_personal: config out: out=&{State:*all,21,false Option:<nil> OAuth:<nil> Error: Result:}, err=<nil>
2025/07/15 19:06:33 DEBUG : onedrive_personal: config in: state="*all,21,false", result=""
2025/07/15 19:06:33 DEBUG : onedrive_personal: config out: out=&{State:*all,22,false Option:<nil> OAuth:<nil> Error: Result:}, err=<nil>
2025/07/15 19:06:33 DEBUG : onedrive_personal: config in: state="*all,22,false", result=""
2025/07/15 19:06:33 DEBUG : onedrive_personal: config out: out=&{State:*all,23,false Option:<nil> OAuth:<nil> Error: Result:}, err=<nil>
2025/07/15 19:06:33 DEBUG : onedrive_personal: config in: state="*all,23,false", result=""
2025/07/15 19:06:33 DEBUG : onedrive_personal: config out: out=&{State:*all,24,false Option:<nil> OAuth:<nil> Error: Result:}, err=<nil>
2025/07/15 19:06:33 DEBUG : onedrive_personal: config in: state="*all,24,false", result=""
2025/07/15 19:06:33 DEBUG : onedrive_personal: config out: out=&{State:*all,25,false Option:<nil> OAuth:<nil> Error: Result:}, err=<nil>
2025/07/15 19:06:33 DEBUG : onedrive_personal: config in: state="*all,25,false", result=""
2025/07/15 19:06:33 DEBUG : onedrive_personal: config out: out=&{State:*all,26,false Option:<nil> OAuth:<nil> Error: Result:}, err=<nil>
2025/07/15 19:06:33 DEBUG : onedrive_personal: config in: state="*all,26,false", result=""
2025/07/15 19:06:33 DEBUG : onedrive_personal: config out: out=&{State:*all,27,false Option:<nil> OAuth:<nil> Error: Result:}, err=<nil>
2025/07/15 19:06:33 DEBUG : onedrive_personal: config in: state="*all,27,false", result=""
2025/07/15 19:06:33 DEBUG : onedrive_personal: config out: out=&{State:*all,28,false Option:<nil> OAuth:<nil> Error: Result:}, err=<nil>
2025/07/15 19:06:33 DEBUG : onedrive_personal: config in: state="*all,28,false", result=""
2025/07/15 19:06:33 DEBUG : onedrive_personal: config out: out=&{State:*all,29,false Option:<nil> OAuth:<nil> Error: Result:}, err=<nil>
2025/07/15 19:06:33 DEBUG : onedrive_personal: config in: state="*all,29,false", result=""
2025/07/15 19:06:33 DEBUG : onedrive_personal: config out: out=&{State:*all-advanced Option:false OAuth:<nil> Error: Result:}, err=<nil>
2025/07/15 19:06:33 DEBUG : onedrive_personal: config: reading config parameter "config_fs_advanced"
Edit advanced config?
y) Yes
n) No (default)
y/n> n

2025/07/15 19:06:36 DEBUG : onedrive_personal: config in: state="*all-advanced", result="false"
2025/07/15 19:06:36 DEBUG : onedrive_personal: config out: out=&{State:*postconfig Option:<nil> OAuth:<nil> Error: Result:}, err=<nil>
2025/07/15 19:06:36 DEBUG : onedrive_personal: config in: state="*postconfig", result=""
2025/07/15 19:06:36 DEBUG : onedrive_personal: config in: state="", result=""
2025/07/15 19:06:36 DEBUG : onedrive_personal: config out: out=&{State:*oauth,choose_type,, Option:<nil> OAuth:<nil> Error: Result:}, err=<nil>
2025/07/15 19:06:36 DEBUG : onedrive_personal: config out: out=&{State:*oauth,choose_type,, Option:<nil> OAuth:<nil> Error: Result:}, err=<nil>
2025/07/15 19:06:36 DEBUG : onedrive_personal: config in: state="*oauth,choose_type,,", result=""
2025/07/15 19:06:36 DEBUG : onedrive_personal: config out: out=&{State:*oauth-confirm,choose_type,, Option:<nil> OAuth:<nil> Error: Result:}, err=<nil>
2025/07/15 19:06:36 DEBUG : onedrive_personal: config in: state="*oauth-confirm,choose_type,,", result=""
2025/07/15 19:06:36 DEBUG : onedrive_personal: config out: out=&{State:*oauth-islocal,choose_type,, Option:true OAuth:<nil> Error: Result:}, err=<nil>
2025/07/15 19:06:36 DEBUG : onedrive_personal: config: reading config parameter "config_is_local"
Use web browser to automatically authenticate rclone with remote?
 * Say Y if the machine running rclone has a web browser you can use
 * Say N if running rclone on a (remote) machine without web browser access
If not sure try Y. If Y failed, try N.

y) Yes (default)
n) No
y/n> n

2025/07/15 19:06:46 DEBUG : onedrive_personal: config in: state="*oauth-islocal,choose_type,,", result="false"
2025/07/15 19:06:46 DEBUG : onedrive_personal: config out: out=&{State:*oauth-remote,choose_type,, Option:<nil> OAuth:<nil> Error: Result:}, err=<nil>
2025/07/15 19:06:46 DEBUG : onedrive_personal: config in: state="*oauth-remote,choose_type,,", result=""
2025/07/15 19:06:46 DEBUG : sending client_id = "XXX"
2025/07/15 19:06:46 DEBUG : sending client_secret = "XXX"
2025/07/15 19:06:46 DEBUG : sending tenant = "XXX"
2025/07/15 19:06:46 DEBUG : onedrive_personal: config out: out=&{State:*oauth-authorize,choose_type,, Option: OAuth:<nil> Error: Result:}, err=<nil>
2025/07/15 19:06:46 DEBUG : onedrive_personal: config: reading config parameter "config_token"
Option config_token.
For this to work, you will need rclone available on a machine that has
a web browser available.
For more help and alternate methods see: https://rclone.org/remote_setup/
Execute the following on the machine with the web browser (same rclone
version recommended):
        rclone authorize "onedrive" "XXX"
Then paste the result.
Enter a value.
config_token> XXX

2025/07/15 19:07:58 DEBUG : onedrive_personal: config in: state="*oauth-authorize,choose_type,,", result="XXX"
2025/07/15 19:07:58 DEBUG : onedrive_personal: config out: out=&{State:*oauth-authorize,choose_type,, Option:<nil> OAuth:<nil> Error:Couldn't decode response - try again (make sure you are using a matching version of rclone on both sides: invalid character 'e' looking for beginning of value
 Result:}, err=<nil>
Couldn't decode response - try again (make sure you are using a matching version of rclone on both sides: invalid character 'e' looking for beginning of value


2025/07/15 19:07:58 DEBUG : onedrive_personal: config in: state="*oauth-authorize,choose_type,,", result=""
2025/07/15 19:07:58 DEBUG : onedrive_personal: config out: out=&{State:*oauth-done,choose_type,, Option:<nil> OAuth:<nil> Error: Result:}, err=<nil>
2025/07/15 19:07:58 DEBUG : onedrive_personal: config in: state="*oauth-done,choose_type,,", result=""
2025/07/15 19:07:58 DEBUG : onedrive_personal: config out: out=&{State:choose_type Option:<nil> OAuth:<nil> Error: Result:}, err=<nil>
2025/07/15 19:07:58 DEBUG : onedrive_personal: config in: state="choose_type", result=""
2025/07/15 19:07:58 DEBUG : onedrive_personal: config out: out=<nil>, err=failed to configure OneDrive: empty token found - please run "rclone config reconnect onedrive_personal:"
Error: failed to configure OneDrive: empty token found - please run "rclone config reconnect onedrive_personal:"
Usage:
  rclone config [flags]
  rclone config [command]

Available commands:
  create      Create a new remote with name, type and options.
  delete      Delete an existing remote.
  disconnect  Disconnects user from remote
  dump        Dump the config file as JSON.
  edit        Enter an interactive configuration session.
  encryption  set, remove and check the encryption for the config file
  file        Show path of configuration file in use.
  password    Update password in an existing remote.
  paths       Show paths used for configuration, cache, temp etc.
  providers   List in JSON format all the providers and options.
  reconnect   Re-authenticates user with remote.
  redacted    Print redacted (decrypted) config file, or the redacted config for a single remote.
  show        Print (decrypted) config file, or the config for a single remote.
  touch       Ensure configuration file exists.
  update      Update options in an existing remote.
  userinfo    Prints info about logged in user of remote.

Flags:
  -h, --help   help for config

Use "rclone [command] --help" for more information about a command.
Use "rclone help flags" for to see the global flags.
Use "rclone help backends" for a list of supported services.

2025/07/15 19:07:58 NOTICE: Fatal error: failed to configure OneDrive: empty token found - please run "rclone config reconnect onedrive_personal:"
rsom@tinytc:~/rclone-v1.71.0-beta.8897.5e539c6a7-linux-amd64$

How to use GitHub

  • Please use the 👍 reaction to show that you are affected by the same issue.
  • Please don't comment if you have no relevant information to add. It's just extra noise for everyone subscribed to this issue.
  • Subscribe to receive notifications on status change and new comments.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions