jaylinski / kodi-addon-vimeo

📽 Vimeo Add-on for Kodi.
MIT License
13 stars 2 forks source link

Add login #3

Closed jaylinski closed 3 years ago

jaylinski commented 5 years ago

Description

As a Vimeo plugin user I want to be able to login to my user account, so I can see my own videos and other details from my profile page.

Acceptance criteria

Notes

Think of a way to protect the Vimeo API secrets. The Vimeo API secret from the Android App will be used.

yoshimo commented 3 years ago

Have you cracked the pinning on the android app @jaylinski ?

jaylinski commented 3 years ago

@yoshimo Only for an older app-version: https://github.com/jaylinski/kodi-addon-vimeo/blob/master/docs/android-app-inspection.md

I'm currently struggling to get the latest version working on Android 11 with MitM interception. I'll give https://github.com/shroudedcode/apk-mitm a try on the weekend.

yoshimo commented 3 years ago

so far the patched app says "something strange happened" when trying to connect to api.vimeo.com. The actual video data from akamai is loaded just fine here. I guess that script is missing something

yoshimo commented 3 years ago

We go with a post request to https://api.vimeo.com/oauth/authorize/password

This includes a url encoded %0D%0Ausername%3De%40mail.de%26password%3DTHEPASSWORD%26grant_type%3Dpassword%26scope%3Dprivate%20public%20create%20edit%20delete%20interact%20upload%20purchased%20stats


{
    "access_token": "TOKENGABBELDIGOO",
    "token_type": "bearer",
    "scope": "private public create edit delete interact upload purchased stats",
    "app": {
        "name": "Vimeo Android App",
        "uri": "/apps/53467"
    },
    "user": {
        "uri": "/users/usernumber",
        "name": "MYNAME",
        "link": "https://vimeo.com/userusernumber",
        "location": "",
        "gender": "",
        "bio": null,
        "short_bio": null,
        "membership": {
            "type": "basic",
            "display": "Basic",
            "badge": {
                "type": null
            },
            "subscription": {
                "billing": {
                    "status": "none"
                },
                "trial": {
                    "has_been_in_free_trial": false
                }
            }
        },
        "created_time": "2021-01-21T15:23:03+00:00",
        "pictures": {
            "uri": null,
            "active": false,
            "type": "default",
            "sizes": [{
                "width": 30,
                "height": 30,
                "link": "https://i.vimeocdn.com/portrait/defaults-blue_30x30.png"
            }, {
                "width": 72,
                "height": 72,
                "link": "https://i.vimeocdn.com/portrait/defaults-blue_72x72.png"
            }, {
                "width": 75,
                "height": 75,
                "link": "https://i.vimeocdn.com/portrait/defaults-blue_75x75.png"
            }, {
                "width": 100,
                "height": 100,
                "link": "https://i.vimeocdn.com/portrait/defaults-blue_100x100.png"
            }, {
                "width": 144,
                "height": 144,
                "link": "https://i.vimeocdn.com/portrait/defaults-blue_144x144.png"
            }, {
                "width": 216,
                "height": 216,
                "link": "https://i.vimeocdn.com/portrait/defaults-blue_216x216.png"
            }, {
                "width": 288,
                "height": 288,
                "link": "https://i.vimeocdn.com/portrait/defaults-blue_288x288.png"
            }, {
                "width": 300,
                "height": 300,
                "link": "https://i.vimeocdn.com/portrait/defaults-blue_300x300.png"
            }, {
                "width": 360,
                "height": 360,
                "link": "https://i.vimeocdn.com/portrait/defaults-blue_360x360.png"
            }],
            "resource_key": "06cd312fcc3908e2d839aeb00ccaaf434acb0859",
            "default_picture": true
        },
        "websites": [],
        "metadata": {
            "connections": {
                "albums": {
                    "uri": "/users/usernumber/albums",
                    "options": ["GET"],
                    "total": 0
                },
                "appearances": {
                    "uri": "/users/usernumber/appearances",
                    "options": ["GET"],
                    "total": 0
                },
                "categories": {
                    "uri": "/users/usernumber/categories",
                    "options": ["GET"],
                    "total": 0
                },
                "channels": {
                    "uri": "/users/usernumber/channels",
                    "options": ["GET"],
                    "total": 0
                },
                "feed": {
                    "uri": "/users/usernumber/feed",
                    "options": ["GET"]
                },
                "followers": {
                    "uri": "/users/usernumber/followers",
                    "options": ["GET"],
                    "total": 0
                },
                "following": {
                    "uri": "/users/usernumber/following",
                    "options": ["GET"],
                    "total": 0
                },
                "groups": {
                    "uri": "/users/usernumber/groups",
                    "options": ["GET"],
                    "total": 0
                },
                "likes": {
                    "uri": "/users/usernumber/likes",
                    "options": ["GET"],
                    "total": 0
                },
                "membership": {
                    "uri": "/users/usernumber/membership/",
                    "options": ["PATCH"]
                },
                "moderated_channels": {
                    "uri": "/users/usernumber/channels?filter=moderated",
                    "options": ["GET"],
                    "total": 0
                },
                "portfolios": {
                    "uri": "/users/usernumber/portfolios",
                    "options": ["GET"],
                    "total": 0
                },
                "videos": {
                    "uri": "/users/usernumber/videos",
                    "options": ["GET"],
                    "total": 0
                },
                "watchlater": {
                    "uri": "/users/usernumber/watchlater",
                    "options": ["GET"],
                    "total": 0
                },
                "shared": {
                    "uri": "/users/usernumber/shared/videos",
                    "options": ["GET"],
                    "total": 0
                },
                "pictures": {
                    "uri": "/users/usernumber/pictures",
                    "options": ["GET", "POST"],
                    "total": 0
                },
                "recommended_users": {
                    "uri": "/me/recommendations/users",
                    "options": ["GET"],
                    "total": 0
                },
                "recommended_channels": {
                    "uri": "/me/recommendations/channels",
                    "options": ["GET"],
                    "total": 11
                },
                "watched_videos": {
                    "uri": "/me/watched/videos",
                    "options": ["GET"],
                    "total": 0
                },
                "folders_root": {
                    "uri": "/users/usernumber/folders/root",
                    "options": ["GET"]
                },
                "projects": {
                    "uri": "/users/usernumber/projects",
                    "options": ["GET", "POST"],
                    "total": 0
                },
                "team_members": {
                    "uri": "/users/usernumber/teammembers",
                    "options": ["GET", "POST"],
                    "total": 0,
                    "invites_remaining": 0,
                    "max_seats": 0
                },
                "teams": {
                    "uri": "/users/usernumber/teams",
                    "options": ["GET"],
                    "total": 1
                },
                "notifications": {
                    "uri": "/me/notifications",
                    "total_new": 0,
                    "new_total": 0,
                    "unread_total": 0,
                    "total": null,
                    "type_count": {
                        "comment": 0,
                        "credit": 0,
                        "like": 0,
                        "followed_user_video_available": 0,
                        "share": 0,
                        "video_available": 0,
                        "mention": 0,
                        "reply": 0,
                        "storage_warning": 0,
                        "follow": 0,
                        "account_expiration_warning": 0,
                        "vod_purchase": 0,
                        "vod_preorder_available": 0,
                        "vod_rental_expiration_warning": 0
                    },
                    "type_unseen_count": {
                        "comment": 0,
                        "credit": 0,
                        "like": 0,
                        "followed_user_video_available": 0,
                        "share": 0,
                        "video_available": 0,
                        "mention": 0,
                        "reply": 0,
                        "storage_warning": 0,
                        "follow": 0,
                        "account_expiration_warning": 0,
                        "vod_purchase": 0,
                        "vod_preorder_available": 0,
                        "vod_rental_expiration_warning": 0
                    }
                },
                "block": {
                    "uri": "/me/block",
                    "options": ["GET"],
                    "total": 0
                },
                "connected_apps": {
                    "uri": "/me/connected_apps",
                    "options": ["GET"],
                    "total": 0
                }
            },
            "interactions": {
                "facebook_connected_app": {
                    "is_connected": false,
                    "options": ["PUT"],
                    "uri": "/me/connected_apps/facebook",
                    "all_scopes": {
                        "publish_to_social": ["public_profile", "pages_show_list", "read_insights", "publish_video", "pages_manage_metadata", "pages_manage_posts"],
                        "business_creative": ["business_creative_management", "business_creative_insights"]
                    }
                },
                "youtube_connected_app": {
                    "is_connected": false,
                    "options": ["PUT"],
                    "uri": "/me/connected_apps/youtube",
                    "all_scopes": {
                        "publish_to_social": ["https://www.googleapis.com/auth/userinfo.profile", "https://www.googleapis.com/auth/youtube", "https://www.googleapis.com/auth/youtube.force-ssl", "https://www.googleapis.com/auth/youtube.readonly", "https://www.googleapis.com/auth/youtube.upload", "https://www.googleapis.com/auth/youtubepartner", "https://www.googleapis.com/auth/youtubepartner-channel-audit", "https://www.googleapis.com/auth/yt-analytics-monetary.readonly", "https://www.googleapis.com/auth/yt-analytics.readonly"]
                    }
                },
                "linkedin_connected_app": {
                    "is_connected": false,
                    "options": ["PUT"],
                    "uri": "/me/connected_apps/linkedin",
                    "all_scopes": {
                        "publish_to_social": ["r_liteprofile", "w_member_social", "r_organization_social", "w_organization_social", "r_organization_admin"]
                    }
                },
                "twitter_connected_app": {
                    "is_connected": false,
                    "options": ["PUT"],
                    "uri": "/me/connected_apps/twitter",
                    "all_scopes": {
                        "publish_to_social": []
                    }
                },
                "pinterest_connected_app": {
                    "is_connected": false,
                    "options": ["PUT"],
                    "uri": "/me/connected_apps/pinterest",
                    "all_scopes": {
                        "publish_to_social": ["read_pins", "read_users", "read_secret_boards", "read_secret_pins", "write_boards", "write_pins"],
                        "business_creative": []
                    }
                }
            }
        },
        "location_details": {
            "formatted_address": "",
            "latitude": null,
            "longitude": null,
            "city": null,
            "state": null,
            "neighborhood": null,
            "sub_locality": null,
            "state_iso_code": null,
            "country": null,
            "country_iso_code": null
        },
        "skills": [],
        "available_for_hire": false,
        "can_work_remotely": false,
        "preferences": {
            "videos": {
                "privacy": {
                    "view": "anybody",
                    "comments": "anybody",
                    "embed": "public",
                    "download": true,
                    "add": true
                }
            }
        },
        "content_filter": ["language", "drugs", "violence", "nudity", "safe", "unrated"],
        "upload_quota": {
            "space": {
                "free": 524288000,
                "max": 524288000,
                "used": 0,
                "showing": "periodic"
            },
            "periodic": {
                "free": 524288000,
                "max": 524288000,
                "used": 0,
                "reset_date": "2021-02-04T00:00:00-05:00"
            },
            "lifetime": {
                "free": 5368709120,
                "max": 5368709120,
                "used": 0
            }
        },
        "emails": [{
            "email": "e@mail.de"
        }],
        "live_quota": {
            "status": "available",
            "time": {
                "monthly_remaining": 600,
                "monthly_maximum": 600,
                "event_maximum": 36000
            },
            "streams": {
                "remaining": 1,
                "maximum": 1
            }
        },
        "resource_key": "RESOURCEKEYNUMBER"
    }
}

is returned

yoshimo commented 3 years ago

to see what the user owns we go with a fully url-encoded GET request to

https://api.vimeo.com/me/ondemand/library?fields=uri,
name,
description,
type,
link,
publish.time,
pictures.sizes.width,
pictures.sizes.link,
metadata.connections.videos,
film.uri,
film.name,
film.description,
film.created_time,
film.release_time,
film.duration,
film.live,
film.play.status,
film.play.progress,
film.play.drm,
film.play.dash,
film.play.hls,
film.play.progressive.type,
film.play.progressive.width,
film.play.progressive.height,
film.play.progressive.link_expiration_time,
film.play.progressive.link,
film.play.progressive.fps,
film.play.progressive.size,
film.play.progressive.md5,
film.play.progressive.log,
film.width,
film.height,
film.link,
film.pictures.sizes.width,
film.pictures.sizes.link,
film.status,
film.privacy.view,
film.privacy.comments,
film.privacy.download,
film.privacy._bypass_token,
film.review_link,
film.review_page.active,
film.review_page.link,
film.file_transfer,
film.spatial,
film.categories.uri,
film.metadata.interactions,
film.metadata.connections.comments,
film.metadata.connections.likes,
film.metadata.connections.recommendations,
film.metadata.connections.publish_to_social,
film.metadata.connections.available_albums.uri,
film.metadata.connections.available_albums.total,
film.metadata.connections.available_channels.uri,
film.metadata.connections.available_channels.total,
film.metadata.connections.trailer,
film.metadata.connections.playback,
film.metadata.connections.ondemand,
film.metadata.connections.season,
film.metadata.connections.live_stats,
film.stats,
film.password,
film.resource_key,
film.live,
film.metadata.connections.texttracks,
film.metadata.connections.users_with_access,
film.upload.status,
film.transcode.status,
film.user.uri,
film.user.id,
film.user.resource_key,
film.user.name,
film.user.bio,
film.user.account,
film.user.location,
film.user.pictures.sizes.width,
film.user.pictures.sizes.link,
film.user.is_staff,
film.user.is_creator,
film.user.membership,
film.user.metadata.connections.likes.uri,
film.user.metadata.connections.likes.total,
film.user.metadata.connections.moderated_channels.uri,
film.user.metadata.connections.moderated_channels.total,
film.user.metadata.connections.channels.uri,
film.user.metadata.connections.channels.total,
film.user.metadata.connections.following.uri,
film.user.metadata.connections.following.total,
film.user.metadata.connections.followers.uri,
film.user.metadata.connections.followers.total,
film.user.metadata.connections.videos.uri,
film.user.metadata.connections.videos.total,
film.user.metadata.connections.watchlater.uri,
film.user.metadata.connections.watchlater.total,
film.user.metadata.interactions.follow.added,
film.user.metadata.interactions.follow.uri,
film.user.metadata.connections.feed.uri,
film.user.metadata.connections.albums.total,
film.user.metadata.connections.connected_apps.uri,
film.user.metadata.connections.connected_apps.total,
film.user.metadata.connections.connected_apps.options,
film.user.metadata.connections.folders_root.uri,
film.user.metadata.connections.pictures,
film.user.metadata.connections.notifications,
film.user.live_quota.status,
film.user.metadata.interactions.facebook_connected_app,
film.user.metadata.interactions.youtube_connected_app,
film.user.metadata.interactions.linkedin_connected_app,
film.user.metadata.interactions.twitter_connected_app,
film.user.preferences.videos,
film.user.upload_quota,
film.user.emails,
trailer,
user.uri,
user.id,
user.resource_key,
user.name,
user.bio,
user.account,
user.location,
user.pictures.sizes.width,
user.pictures.sizes.link,
user.is_staff,
user.is_creator,
user.membership,
user.metadata.connections.likes.uri,
user.metadata.connections.likes.total,
user.metadata.connections.moderated_channels.uri,
user.metadata.connections.moderated_channels.total,
user.metadata.connections.channels.uri,
user.metadata.connections.channels.total,
user.metadata.connections.following.uri,
user.metadata.connections.following.total,
user.metadata.connections.followers.uri,
user.metadata.connections.followers.total,
user.metadata.connections.videos.uri,
user.metadata.connections.videos.total,
user.metadata.connections.watchlater.uri,
user.metadata.connections.watchlater.total,
user.metadata.interactions.follow.added,
user.metadata.interactions.follow.uri,
user.metadata.connections.feed.uri,
user.metadata.connections.albums.total,
user.metadata.connections.connected_apps.uri,
user.metadata.connections.connected_apps.total,
user.metadata.connections.connected_apps.options,
user.metadata.connections.folders_root.uri,
user.metadata.connections.pictures,
user.metadata.connections.notifications,
user.live_quota.status,
user.metadata.interactions.facebook_connected_app,
user.metadata.interactions.youtube_connected_app,
user.metadata.interactions.linkedin_connected_app,
user.metadata.interactions.twitter_connected_app,
user.preferences.videos,
user.upload_quota,
user.emails&sort=purchase_time&_video_override=true&direction=desc

line breaks are inserted for better readability.

If you have nothing you get back this block that looks similiar


{
    "total": 0,
    "page": 1,
    "per_page": 25,
    "paging": {
        "next": null,
        "previous": null,
        "first": "/me/ondemand/library?fields=uri%2Cname%2Cdescription%2Ctype%2Clink%2Cpublish.time%2Cpictures.sizes.width%2Cpictures.sizes.link%2Cmetadata.connections.videos%2Cfilm.uri%2Cfilm.name%2Cfilm.description%2Cfilm.created_time%2Cfilm.release_time%2Cfilm.duration%2Cfilm.live%2Cfilm.play.status%2Cfilm.play.progress%2Cfilm.play.drm%2Cfilm.play.dash%2Cfilm.play.hls%2Cfilm.play.progressive.type%2Cfilm.play.progressive.width%2Cfilm.play.progressive.height%2Cfilm.play.progressive.link_expiration_time%2Cfilm.play.progressive.link%2Cfilm.play.progressive.fps%2Cfilm.play.progressive.size%2Cfilm.play.progressive.md5%2Cfilm.play.progressive.log%2Cfilm.width%2Cfilm.height%2Cfilm.link%2Cfilm.pictures.sizes.width%2Cfilm.pictures.sizes.link%2Cfilm.status%2Cfilm.privacy.view%2Cfilm.privacy.comments%2Cfilm.privacy.download%2Cfilm.privacy._bypass_token%2Cfilm.review_link%2Cfilm.review_page.active%2Cfilm.review_page.link%2Cfilm.file_transfer%2Cfilm.spatial%2Cfilm.categories.uri%2Cfilm.metadata.interactions%2Cfilm.metadata.connections.comments%2Cfilm.metadata.connections.likes%2Cfilm.metadata.connections.recommendations%2Cfilm.metadata.connections.publish_to_social%2Cfilm.metadata.connections.available_albums.uri%2Cfilm.metadata.connections.available_albums.total%2Cfilm.metadata.connections.available_channels.uri%2Cfilm.metadata.connections.available_channels.total%2Cfilm.metadata.connections.trailer%2Cfilm.metadata.connections.playback%2Cfilm.metadata.connections.ondemand%2Cfilm.metadata.connections.season%2Cfilm.metadata.connections.live_stats%2Cfilm.stats%2Cfilm.password%2Cfilm.resource_key%2Cfilm.live%2Cfilm.metadata.connections.texttracks%2Cfilm.metadata.connections.users_with_access%2Cfilm.upload.status%2Cfilm.transcode.status%2Cfilm.user.uri%2Cfilm.user.id%2Cfilm.user.resource_key%2Cfilm.user.name%2Cfilm.user.bio%2Cfilm.user.account%2Cfilm.user.location%2Cfilm.user.pictures.sizes.width%2Cfilm.user.pictures.sizes.link%2Cfilm.user.is_staff%2Cfilm.user.is_creator%2Cfilm.user.membership%2Cfilm.user.metadata.connections.likes.uri%2Cfilm.user.metadata.connections.likes.total%2Cfilm.user.metadata.connections.moderated_channels.uri%2Cfilm.user.metadata.connections.moderated_channels.total%2Cfilm.user.metadata.connections.channels.uri%2Cfilm.user.metadata.connections.channels.total%2Cfilm.user.metadata.connections.following.uri%2Cfilm.user.metadata.connections.following.total%2Cfilm.user.metadata.connections.followers.uri%2Cfilm.user.metadata.connections.followers.total%2Cfilm.user.metadata.connections.videos.uri%2Cfilm.user.metadata.connections.videos.total%2Cfilm.user.metadata.connections.watchlater.uri%2Cfilm.user.metadata.connections.watchlater.total%2Cfilm.user.metadata.interactions.follow.added%2Cfilm.user.metadata.interactions.follow.uri%2Cfilm.user.metadata.connections.feed.uri%2Cfilm.user.metadata.connections.albums.total%2Cfilm.user.metadata.connections.connected_apps.uri%2Cfilm.user.metadata.connections.connected_apps.total%2Cfilm.user.metadata.connections.connected_apps.options%2Cfilm.user.metadata.connections.folders_root.uri%2Cfilm.user.metadata.connections.pictures%2Cfilm.user.metadata.connections.notifications%2Cfilm.user.live_quota.status%2Cfilm.user.metadata.interactions.facebook_connected_app%2Cfilm.user.metadata.interactions.youtube_connected_app%2Cfilm.user.metadata.interactions.linkedin_connected_app%2Cfilm.user.metadata.interactions.twitter_connected_app%2Cfilm.user.preferences.videos%2Cfilm.user.upload_quota%2Cfilm.user.emails%2Ctrailer%2Cuser.uri%2Cuser.id%2Cuser.resource_key%2Cuser.name%2Cuser.bio%2Cuser.account%2Cuser.location%2Cuser.pictures.sizes.width%2Cuser.pictures.sizes.link%2Cuser.is_staff%2Cuser.is_creator%2Cuser.membership%2Cuser.metadata.connections.likes.uri%2Cuser.metadata.connections.likes.total%2Cuser.metadata.connections.moderated_channels.uri%2Cuser.metadata.connections.moderated_channels.total%2Cuser.metadata.connections.channels.uri%2Cuser.metadata.connections.channels.total%2Cuser.metadata.connections.following.uri%2Cuser.metadata.connections.following.total%2Cuser.metadata.connections.followers.uri%2Cuser.metadata.connections.followers.total%2Cuser.metadata.connections.videos.uri%2Cuser.metadata.connections.videos.total%2Cuser.metadata.connections.watchlater.uri%2Cuser.metadata.connections.watchlater.total%2Cuser.metadata.interactions.follow.added%2Cuser.metadata.interactions.follow.uri%2Cuser.metadata.connections.feed.uri%2Cuser.metadata.connections.albums.total%2Cuser.metadata.connections.connected_apps.uri%2Cuser.metadata.connections.connected_apps.total%2Cuser.metadata.connections.connected_apps.options%2Cuser.metadata.connections.folders_root.uri%2Cuser.metadata.connections.pictures%2Cuser.metadata.connections.notifications%2Cuser.live_quota.status%2Cuser.metadata.interactions.facebook_connected_app%2Cuser.metadata.interactions.youtube_connected_app%2Cuser.metadata.interactions.linkedin_connected_app%2Cuser.metadata.interactions.twitter_connected_app%2Cuser.preferences.videos%2Cuser.upload_quota%2Cuser.emails&sort=purchase_time&_video_override=true&direction=desc&page=1",
        "last": "/me/ondemand/library?fields=uri%2Cname%2Cdescription%2Ctype%2Clink%2Cpublish.time%2Cpictures.sizes.width%2Cpictures.sizes.link%2Cmetadata.connections.videos%2Cfilm.uri%2Cfilm.name%2Cfilm.description%2Cfilm.created_time%2Cfilm.release_time%2Cfilm.duration%2Cfilm.live%2Cfilm.play.status%2Cfilm.play.progress%2Cfilm.play.drm%2Cfilm.play.dash%2Cfilm.play.hls%2Cfilm.play.progressive.type%2Cfilm.play.progressive.width%2Cfilm.play.progressive.height%2Cfilm.play.progressive.link_expiration_time%2Cfilm.play.progressive.link%2Cfilm.play.progressive.fps%2Cfilm.play.progressive.size%2Cfilm.play.progressive.md5%2Cfilm.play.progressive.log%2Cfilm.width%2Cfilm.height%2Cfilm.link%2Cfilm.pictures.sizes.width%2Cfilm.pictures.sizes.link%2Cfilm.status%2Cfilm.privacy.view%2Cfilm.privacy.comments%2Cfilm.privacy.download%2Cfilm.privacy._bypass_token%2Cfilm.review_link%2Cfilm.review_page.active%2Cfilm.review_page.link%2Cfilm.file_transfer%2Cfilm.spatial%2Cfilm.categories.uri%2Cfilm.metadata.interactions%2Cfilm.metadata.connections.comments%2Cfilm.metadata.connections.likes%2Cfilm.metadata.connections.recommendations%2Cfilm.metadata.connections.publish_to_social%2Cfilm.metadata.connections.available_albums.uri%2Cfilm.metadata.connections.available_albums.total%2Cfilm.metadata.connections.available_channels.uri%2Cfilm.metadata.connections.available_channels.total%2Cfilm.metadata.connections.trailer%2Cfilm.metadata.connections.playback%2Cfilm.metadata.connections.ondemand%2Cfilm.metadata.connections.season%2Cfilm.metadata.connections.live_stats%2Cfilm.stats%2Cfilm.password%2Cfilm.resource_key%2Cfilm.live%2Cfilm.metadata.connections.texttracks%2Cfilm.metadata.connections.users_with_access%2Cfilm.upload.status%2Cfilm.transcode.status%2Cfilm.user.uri%2Cfilm.user.id%2Cfilm.user.resource_key%2Cfilm.user.name%2Cfilm.user.bio%2Cfilm.user.account%2Cfilm.user.location%2Cfilm.user.pictures.sizes.width%2Cfilm.user.pictures.sizes.link%2Cfilm.user.is_staff%2Cfilm.user.is_creator%2Cfilm.user.membership%2Cfilm.user.metadata.connections.likes.uri%2Cfilm.user.metadata.connections.likes.total%2Cfilm.user.metadata.connections.moderated_channels.uri%2Cfilm.user.metadata.connections.moderated_channels.total%2Cfilm.user.metadata.connections.channels.uri%2Cfilm.user.metadata.connections.channels.total%2Cfilm.user.metadata.connections.following.uri%2Cfilm.user.metadata.connections.following.total%2Cfilm.user.metadata.connections.followers.uri%2Cfilm.user.metadata.connections.followers.total%2Cfilm.user.metadata.connections.videos.uri%2Cfilm.user.metadata.connections.videos.total%2Cfilm.user.metadata.connections.watchlater.uri%2Cfilm.user.metadata.connections.watchlater.total%2Cfilm.user.metadata.interactions.follow.added%2Cfilm.user.metadata.interactions.follow.uri%2Cfilm.user.metadata.connections.feed.uri%2Cfilm.user.metadata.connections.albums.total%2Cfilm.user.metadata.connections.connected_apps.uri%2Cfilm.user.metadata.connections.connected_apps.total%2Cfilm.user.metadata.connections.connected_apps.options%2Cfilm.user.metadata.connections.folders_root.uri%2Cfilm.user.metadata.connections.pictures%2Cfilm.user.metadata.connections.notifications%2Cfilm.user.live_quota.status%2Cfilm.user.metadata.interactions.facebook_connected_app%2Cfilm.user.metadata.interactions.youtube_connected_app%2Cfilm.user.metadata.interactions.linkedin_connected_app%2Cfilm.user.metadata.interactions.twitter_connected_app%2Cfilm.user.preferences.videos%2Cfilm.user.upload_quota%2Cfilm.user.emails%2Ctrailer%2Cuser.uri%2Cuser.id%2Cuser.resource_key%2Cuser.name%2Cuser.bio%2Cuser.account%2Cuser.location%2Cuser.pictures.sizes.width%2Cuser.pictures.sizes.link%2Cuser.is_staff%2Cuser.is_creator%2Cuser.membership%2Cuser.metadata.connections.likes.uri%2Cuser.metadata.connections.likes.total%2Cuser.metadata.connections.moderated_channels.uri%2Cuser.metadata.connections.moderated_channels.total%2Cuser.metadata.connections.channels.uri%2Cuser.metadata.connections.channels.total%2Cuser.metadata.connections.following.uri%2Cuser.metadata.connections.following.total%2Cuser.metadata.connections.followers.uri%2Cuser.metadata.connections.followers.total%2Cuser.metadata.connections.videos.uri%2Cuser.metadata.connections.videos.total%2Cuser.metadata.connections.watchlater.uri%2Cuser.metadata.connections.watchlater.total%2Cuser.metadata.interactions.follow.added%2Cuser.metadata.interactions.follow.uri%2Cuser.metadata.connections.feed.uri%2Cuser.metadata.connections.albums.total%2Cuser.metadata.connections.connected_apps.uri%2Cuser.metadata.connections.connected_apps.total%2Cuser.metadata.connections.connected_apps.options%2Cuser.metadata.connections.folders_root.uri%2Cuser.metadata.connections.pictures%2Cuser.metadata.connections.notifications%2Cuser.live_quota.status%2Cuser.metadata.interactions.facebook_connected_app%2Cuser.metadata.interactions.youtube_connected_app%2Cuser.metadata.interactions.linkedin_connected_app%2Cuser.metadata.interactions.twitter_connected_app%2Cuser.preferences.videos%2Cuser.upload_quota%2Cuser.emails&sort=purchase_time&_video_override=true&direction=desc&page=1"
    },
    "data": []
}
jaylinski commented 3 years ago

@yoshimo Thanks for investing your time and getting things working with the apk-mitm tool. Also works for me now :)

What do you think about using the "Device code grant"-method for authorization?

This way the Vimeo user doesn't have to enter a password in Kodi. The user can authenticate on a (mobile) device and can grant just the permissions required for the Kodi addon.

yoshimo commented 3 years ago

I think for the average user a "password&username" procedure is more intuitive and less work. Regarding #44 , we might have to cheat with the website , so far i have not been able to buy things in the official app. It shows only trailers with no purchase button unlike the official website

jaylinski commented 3 years ago

@yoshimo Small update: I started to implement the login (see PR above). I chose to use the device-code grant, because it returns an access-token with infinite lifetime (in contrast to "password&username", which returns an access-code only valid for an hour, and I don't want to bother with refresh-tokens and stuff). Also this way we don't have to store the password as clear-text.

jaylinski commented 3 years ago

Login/logout now works. Only thing left is the profile-folder and polishing.