Answering my own question:
I reviewed another well-known plugin, Google Analytics, which provides both approaches to the user: The user can either:
-
Use the plugin’s client id and secret key to request an authorization code with offline access. The user pastes the code into a text field and the plugin proceeds to request an access token.
-
Go to the developer console, create a new project, copy-paste the client id and secret from the developer console into the plugin, then proceed with authorization.
I ended up implementing the first approach only. It seems the most appropriate for novice users.
I am still unsure as to whether publishing the client secret is an issue, but what I know is that at least two major WordPress plugins do it already…
Related Posts:
- Should I ask my Twitter plugin users to create their own Twitter App and API Keys to use my plugin?
- Google credentials and redirect URI for Google OAuth2 in a WordPress plugin, questions
- How do WordPress plugins work with oAuth2 APIs?
- Email verification feature in wordpress social login plugin
- How can I update a wordpress plugin from a Git repository (github)
- Is There a Plugin Life Cycle Documentation?
- What is the difference between $post_id and get_the_ID()?
- Where to store plugin settings fields
- What is an alternative method to the WordPress private _doing_it_wrong() function
- How can I add columns to the post edit listing to show my custom post data?
- Shortcode adding p and br tags
- Custom frontend page for plugin without a ‘physical’ page?
- Using AJAX in a plugin to submit form – REALLY confused
- Plugin Architecture/Design Pattern – is better to use a private Observer/Mediator Pattern for plugin subclasses or WP add_action?
- Install and load additional plugins when running unit tests
- Having Problem On Getting WP Post Gallery Images URL
- Post added via wp_insert_post with category doesn’t show in category listing
- How to add more than 1 user role to sub-menu pages
- How to properly use a hook to create template for custom product type in a plugin such as Woocommerce? [closed]
- How do I hook a custom discount to change a WC_Order price total on WooCommerce?
- Using a front controller in a WordPress plugin, any suggestions?
- How do I determine if a category exists by ID?
- Properly licensing a plugin that uses Apache 2.0 licensed code
- Can I dynamically create a link to my plugin settings/options page from my plugin description?
- How to load the plugin only when logged in?
- Self-hosted plugin update problems
- How to avoid creating first submenu page that is same as menu page?
- Hook into theme-switching later than `setup_theme`
- Save image as featured image
- Best choice of options/settings framework for plugin/theme development
- WP AJAX is not working, always returns 0
- Act on user meta updated, but only once
- get_pages Drop down list for selection of a page
- Admin auto-refresh is interfering with Firebug — how to prevent it?
- Hide plugin dashboard menu item for specific roles
- How to use relative path with my plugins folders?
- Files automatically added
- WordPress mode for emacs?
- Widget translation on my plugin
- Upload to a remote server using wp_remote_post
- Make WordPress cache permanent for some pages until edited
- conditionally load javascript & CSS for do_action() calls from plugin
- The plugin does not save data
- wp_redirect on base wp-admin and login
- As a plugin developer, how do I remove a plugin from the global plugin directory? [duplicate]
- Creating custom input fields on the admin side
- Valid filenames for add_action’s first parameter
- What to hook into to check a value before a post is published?
- How do I access the menus produced by Dashboard > Appearance > Menus
- Correct syntax for database inserts from plugin?
- How to add a gradient component to a custom block
- wp_schedule_event() set daily, but processed every second
- Can’t get AJAX call working in custom plugin
- How leave selected checkboxes marked after they are selected and saved in the database
- Custom avatars in wordpress comments?
- $wpdb->update() always need a second try
- Why aren’t some plugin styles loading when I load a template?
- How to create custom dynamic url
- Pagination not working with custom wp_query
- Any way to update_post_meta with html content? It gets stripped and becomes empty
- How to get the number of pages when paginating comments?
- WordPress actions for plugin admin UI page
- wp_insert_user keeps echoing values
- Getting posts by taxonomy
- Pause plugin option page until all data manipulation is complete
- can members have multiple registration using the same password?
- Exclude Woocommerce Product Category From Sitemap
- WordPress (pagenow link) in ajaxurl change after i change plugin language
- How to show only the last two categories in a menu?
- Get API auth_token token to renew weekly
- howTo let wordpress endpoint return html-page
- User meta query using Wildcard
- use a (Polymer) web component within a plugin (or theme)?
- how to add security questions on wp-registration page and validate it
- wp_ajax add_action fuction won’t fire on custom jQuery action
- Hiding WordPress REST endpoints from public viewing using Basic Authentication
- Customize WordPress Admin Menu
- Dedicated server and WPDB Class : huge slow-down of the website
- How can I see a varibles value when my plugin runs?
- Add Button to TinyMCE Custom Menu
- How should I use wpdb class to submit a form in admin dashboard?
- Rewriting URLs with a query string
- Forcing ALL plugin Admin menus into a separate menu
- Create pages for authors
- How do I create Widget within plugin that uses its own class?
- Looking for Hook that is fired after a plugin or wp upgrade is installed/updated
- How to design WooCommerce-like admin tabs for plugin settings page?
- Woocommerce: block user removing cart item
- How can I dynamically change title and description in WordPress?
- WordPress pre-build slider
- Build a dynamic block using the default attributes
- How to display .ptm file in my WP site without JAVA
- Bulk post approval and publishing doesn’t work
- Show Admin Menu
- How to replace content of a block in and re-render on change?
- extending a core block doesn’t work inside the editor
- register_activation_hook doesn’t execute without add_action(‘init’,’some-function’)
- Getting similar posts by custom field value
- Does WP REST API cache internally executed (rest_do_request) requests?
- Trouble Importing whatsapp-web.js in a WordPress Plugin Development