How to avoid Shopify app opening in a new tab? - shopify

THE SITUATION:
I am testing my Shopify app.
Until few days ago it was working fine.
The intended behavior was it to be opened embedded in Shopify dashboard.
Recently when I click on the app it opens in a new tab at the following url:
https://[STORE-ID].myshopify.com/admin/apps/[APP-NAME]?force_legacy_domain=1
Note the force_legacy_domain param added to the url.
SHOPIFY DOMAIN CHANGE
It seems there have been some changes in the Shopify admin url.
With the new change it should be opened at the following url:
https://admin.shopify.com/store/[STORE-NAME]/apps/[APP-NAME]
QUESTION:
How can I avoid opening the app in a new tab?

I think you answer this one by simply ensuring you are keeping track of the right parameters, and Shopify will not do the new tab. So ensure you have your host and shop parameters throughout the lifecycle of all calls to your App. If you are not setting the host, or handling the admin.shopify.com domain correctly, Shopify is sending you to the legacy handler, and that opens your App in a new tab it seems, reminding you to ensure you are handling all the parameters correctly for both the new and hold Shopify App domains.

Looks like this may be a bug on Shopify's end.
There is a github issue reported here:
https://github.com/Shopify/shopify-app-bridge/issues/160#issuecomment-1425990569
And there is a thread I found on the Shopify developer forums: https://community.shopify.com/c/technical-q-a/force-legacy-domain-1-cascading-redirects-using-shopify-app/td-p/1938587

Related

How to display data in Shopify Store from external API using app proxy

My goal is to display data retrieved from a 3rd party (external) API that requires authentication in my Liquid Shopify theme.
I'm looking to access product options data from the Hulk Product Options API, which requires authentication, as documented here: https://productoption.hulkapps.com/api-docs/index.html
My goal would be to send a get request and retrieve data from the Hulk Product Options endpoint.
I've read that an App Proxy is what I need to set up, however I am new to the Shopify app world and am totally lost at how to set this up.
What I've done:
Followed the steps here to create an app and install it on a development store that I created through my partners dashboard.
Went to the partners dashboard, clicked "Apps" and found the app proxy section.
Questions:
What do I put in those fields? I can't find examples for filling out that section with info from an external API.
What code in which file do I need to add to the node app that was generated using shopify node create. Or is this app just necessary to be able to fill out the app proxy info?
What url can I send a GET request to using AJAX / JS in my liquid theme code?
I'm a theme developer new to app development and have never created an app, so if you can provide basic and specific instructions (code would be wonderful!) for someone who knows front-end and is competent but is lost in the app world it's much appreciated. I've asked other theme developers who also have also tried and not been able to figure this out, so there seems to be a gap in the tutorials and resources provided.
Thanks in advance!

Branch.io architecture query

I have the following requirement and based on the branch docs I cannot get myself a straight answer.
We want to enable deep links that if the user has the app installed that it uses them and if not redirects to download then redirects.
If the user is on a desktop they get redirected to a page to download app.
We want to control all the actual deep linking using react navigation config and wanted to know how we can pair the two!? The guides are very poorly written and makes understanding the flow a nightmare.
Some guidance and suggestions on how best to accomplish this would be great.
P.s. are the links generated that when app found it takes the prefix and replaces with appname:// ??
Your requirement for deep linking can be handled with Branch, you can set the URI schemes of the apps under the link settings of your Branch dashboard and also mention your app on PlayStore/Appstore for the user to download the app when clicked on the link.Similarly you can add the redirection URLs for the scenarios when your link is clicked on a desktop.
Alternatively you can use our React SDK to create links with all these link properties and even more. More details here.
The handling of the deep link data and redirecting the user to the desired page can be found here.
If you wish to know more about how Branch passes data through to the app and attributes app sessions, check this.

Redirect shopify app url to custom url

I have created an app in shopify and after installing it in the store, I want when I click on the app then it will redirect to other domain like www.abc.com instead of open it in the shopify admin.
I have checked this type of functionality in many apps but don't know how to implement it. Please help me to solve this issue.
Thanks
Firstly, you need to create account as Shopify partners. Once you sign-in in your account, you will see Apps on the left side of the dashboard. You will see Redirection URL in the options available. You can also give name and other details of your app in this session.
most likely your app is an embedded app that is why it is not opening new tab upon clicking from admin app listing. you first understand whether your app required embedding functionality or not.

App installation in BigCommerce

I have a problem with BigCommerce installation process.
According to documentation (https://developer.bigcommerce.com/api/callback) I receive GET request, do exchange for OAuth info via POST request and return HTML page to user.
App seems successfully installed, I can see it in left panel, but it don't send request to LoadCallback with signed payload. When I click to application's icon it just hides/shows HTML page that I send during intallation.
Seems like the only way to make BigCommerce do LoadCallback request is to open app after relogin.
Did I do something wrong during installation process?
No, this is intended behavior. Most apps have a sign up process that cause a frame reload of the app. You can force a reload after installation or use a form submission action via javascript. Alternatively, you can reload the control panel and reopen app or relogin and open.

Disable Twitter Universal Deep Links

Update: It appears Twitter has fixed this issue. Clicking the authorize button now works! Thank you all for the responses.
I have a UIWebView that opens and directs to Twitters Oauth/Authorize webpage. The user signs in with there Twitter details and authenticates the use of our application with there Twitter account. This process worked perfect before the release of Twitter 6.37 iOS application. What happens now is when the WebView detects https://twitter.com/oauth/authorize?oauth_token instead of staying in the WebView it opens the native Twitter application and dies. If you uninstall the Twitter application everything works as usually it staying within the WebView. How can I prevent this from happening? I want to stay within my UIWebView and not automatically open deep links. I have been reading about the new URL deep link changes in iOS 9, but not sure of how to stop them from my application to other native applications. Thanks for any help!
As a workaround, in twitter authentication screen we can use the Go button on iOS typing keypad instead of using the sign in button on web view until twitter fixes.
Please refer the attached screenshot link for clarity.
Screenshot for the workaround
I ran into this issue as well and figured out it was because my authorize endpoint was set to https://twitter.com/oauth/authorize?oauth_token="+oauthToken (I believe this was in the original documentation). If you add api as the subdomain: https://api.twitter.com/oauth/authorize?oauth_token="+oauthToken, it will no longer trigger the deep linking and load the twitter app.
My answer to this via a Xamarin question:
Unless Twitter removes/updates the apps section of "https://www.twitter.com/apple-app-site-association" to allow a bypass or a secondary oauth that is not in the apple-app-site-association file I do not see how you would do it. These files are signed and iOS handles them at an OS level.
I have not played around very much with the continueUserActivity delegate and the NSUserActivity object that is passed to apps launched from UNI links, but I do not see a way for the launched app (i.e. Twitter) to return control to the original app, and at that point the oauth call-chain would be broken anyway....
Unique. Unlike custom URL schemes, universal links can’t be claimed by other apps, because they use standard HTTP or HTTPS links to your website.
Secure. When users install your app, iOS checks a file that you’ve uploaded to your web server to make sure that your website allows your app to open URLs on its behalf. Only you can create and upload this file, so the association of your website with your app is secure.
Via: https://developer.apple.com/library/prerelease/ios/documentation/General/Conceptual/AppSearch/UniversalLinks.html
I would report as an issue (bug?) to Twitter's Dev forum: https://twittercommunity.com