Dropbox library (LC 9) - does dropboxGetCurrentAccount work?

Mike Kerner MikeKerner at roadrunner.com
Wed Oct 11 10:11:53 EDT 2017


Please try to break it so I don't have my name on a PR that LC sends that
breaks someone's mission critical app.

On Wed, Oct 11, 2017 at 10:08 AM, Ben Rubinstein via use-livecode <
use-livecode at lists.runrev.com> wrote:

> 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 <MikeKerner at roadrunner.com>
>> 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 <
>>> use-livecode at lists.runrev.com> 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 <
>>>>> use-livecode at lists.runrev.com> 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/u
>>>>>>> sers/get_current_account
>>>>>>> \
>>>>>>>       --header "Authorization: Bearer <Access Token>"
>>>>>>>
>>>>>>> works and returns the expected data; but
>>>>>>>
>>>>>>> $ curl -X POST https://api.dropboxapi.com/2/u
>>>>>>> sers/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
>>>>>>>>> use-livecode at lists.runrev.com
>>>>>>>>> Please visit this url to subscribe, unsubscribe and manage your
>>>>>>>>> subscription preferences:
>>>>>>>>> http://lists.runrev.com/mailman/listinfo/use-livecode
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> _______________________________________________
>>>>>>>>>
>>>>>>>> use-livecode mailing list
>>>>>>>> use-livecode at lists.runrev.com
>>>>>>>> Please visit this url to subscribe, unsubscribe and manage your
>>>>>>>> subscription preferences:
>>>>>>>> http://lists.runrev.com/mailman/listinfo/use-livecode
>>>>>>>>
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>>
>>>>>>> use-livecode mailing list
>>>>>>> use-livecode at lists.runrev.com
>>>>>>> Please visit this url to subscribe, unsubscribe and manage your
>>>>>>> subscription preferences:
>>>>>>> http://lists.runrev.com/mailman/listinfo/use-livecode
>>>>>>>
>>>>>>>
>>>>>>> _______________________________________________
>>>>>> use-livecode mailing list
>>>>>> use-livecode at lists.runrev.com
>>>>>> Please visit this url to subscribe, unsubscribe and manage your
>>>>>> subscription preferences:
>>>>>> http://lists.runrev.com/mailman/listinfo/use-livecode
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>> use-livecode mailing list
>>>> use-livecode at lists.runrev.com
>>>> 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
> use-livecode at lists.runrev.com
> 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."



More information about the use-livecode mailing list