Dodgy coding by someone at Dropbox. But there you go!
Thanks for your help,
Ben
On 11/10/2017 14:23, Mike Kerner via use-livecode wrote:
And, curiously, as it turns out, the other endpoints that take a null post
accept empty (and don't like getting "null"). It seems this only affects
getCurrentAccount.
On Wed, Oct 11, 2017 at 8:52 AM, Mike Kerner <[email protected]>
wrote:
What Gerard did in the original library is use the word "null" instead of
empty. So his version of __get_current_account_POST would be
private function __get_current_account_POST
return "null"
end get_current_account_POST
For some reason, empty doesn't work, but anything (inluding the word
"null") works.
Before I make the PR I'm going to see if anything else breaks by doing
that, and I'm also going to add the rest of the error message, that gets
dropped.
On Wed, Oct 11, 2017 at 8:27 AM, Ben Rubinstein via use-livecode <
[email protected]> wrote:
20555 for POST; 20556 for dropboxGetCurrentAccount.
I have found the bug in LC's library, and I patched it to get it to work,
but I want to understand more of why, and also to make sure I'm not going
to break something else before I issue a pull request.
How are you patching it to work? I can't see any way of issuing a POST
request in LC code (without using curl, which won't work on mobile) that
gets round this problem.
On 11/10/2017 11:58, Mike Kerner via use-livecode wrote:
Feel like opening a couple QR's? I think we need two: one for post and
one for the error in the library.
In fact, there are two problems in the library. One is the way the
library
handles errors returned by dropbox (you only get half the error message),
and the other is the way endpoints like this one are handled. Hopefully
I'll have both of those patched and up to my repo and the PR submitted,
today.
If you want, you can also patch the library code, but if you do, I'd
suggest moving your project to LC8 and including the patched library
stack
as a substack.
On Wed, Oct 11, 2017 at 6:45 AM, Ben Rubinstein via use-livecode <
[email protected]> wrote:
You beat me to it!
On 11/10/2017 11:23, Ben Rubinstein via use-livecode wrote:
Hi Mike (or anyone else)
Can you confirm that dropboxGetCurrentAccount (NOT dropboxGetAccount)
is
working for you in LC 9.0.0 dp 9?
It consistently fails for me, and the problem seems to be precisely the
lack of a parameter other than the access token.
Dropbox returns a 400, AFAICT, precisely because the POST is empty.
Fiddling with this in curl, I find that
$ curl -X POST https://api.dropboxapi.com/2/users/get_current_account
\
--header "Authorization: Bearer <Access Token>"
works and returns the expected data; but
$ curl -X POST https://api.dropboxapi.com/2/users/get_current_account
\
--header "Content-Type: application/json" \
--header "Authorization: Bearer <Access Token>" \
--data-ascii ""
which is roughly what LC is doing, fails with 400 Bad Request.
In other words, it seems that Dropbox requires this call to be made as
a
POST with no data at all; and that what LiveCode does when posting
empty to
a URL is a post with a content-length of 0 - and Dropbox won't accept
it.
So I'm puzzled as to how this is working for you. Are you using a
different version of DP9 with a different tsNet version perhaps?
TIA,
Ben
On 11/10/2017 08:05, Ben Rubinstein via use-livecode wrote:
Hi Mike,
Thanks for checking. According to the Dictionary,
dropboxGetCurrentAccount only takes one parameter
dropboxGetCurrentAccount pAccessToken, [pCallback]
if it's supposed to take two, that would explain the 400 error! But
how
does one obtain the account_id in the first place?
I'm really only wanting to make this call because it looked liked the
cheapest way to find out if the app has a valid token for Dropobox; I
can
either display the account it's logged in to, or a button offering to
log
in. Is there another way?
Many thanks,
Ben
On 11/10/2017 01:49, Mike Kerner via use-livecode wrote:
It works for me in both 8 and 9.
The only way I get error 400 is if I enclose the arguments in
parenthesis
(which tells LC that all of that goodness goes into the first
parameter)
Remember, this is a command, not a function, so the arguments are not
enclosed:
dropboxGetCurrentAccount oauthToken, account_id
if the result is not empty then
answer the result
exit to top
else #the result is empty
answer it
end if #the result is not empty
_______________________________________________
use-livecode mailing list
[email protected]
Please visit this url to subscribe, unsubscribe and manage your
subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode
_______________________________________________
use-livecode mailing list
[email protected]
Please visit this url to subscribe, unsubscribe and manage your
subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode
_______________________________________________
use-livecode mailing list
[email protected]
Please visit this url to subscribe, unsubscribe and manage your
subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode
_______________________________________________
use-livecode mailing list
[email protected]
Please visit this url to subscribe, unsubscribe and manage your
subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode
_______________________________________________
use-livecode mailing list
[email protected]
Please visit this url to subscribe, unsubscribe and manage your
subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode
--
On the first day, God created the heavens and the Earth
On the second day, God created the oceans.
On the third day, God put the animals on hold for a few hours,
and did a little diving.
And God said, "This is good."
_______________________________________________
use-livecode mailing list
[email protected]
Please visit this url to subscribe, unsubscribe and manage your subscription
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode