Facebook Built-in Like action callback - objective-c

Facebook recently introduced the "Built-in Like" as a built-in Open Graph action (see blogpost and documentation). I would like to implement this functionality in my iOS App and be able to listen to the event, when the user completes the like action (similarly to using FB.Event.subscribe in JavaScript). Is this posible and how would you accomplish this?

From the documentation you linked:
To publish a built-in Like action on an Open Graph object, invoke the following HTTP POST request with a user’s access token and the url
of the Open Graph object. This Open Graph object can be of any type.
[example snipped]
which in turn will return the ID of the built-in Like action instance if the call is successful`
The API call itself, which your app makes, will return the ID of the newly created object, there's no special or separate callback - your own code is creating the Like action.

Related

Unable to successfully call captureVisibleTab() despite requesting <all_urls> permissions

I'm working on a browser extension for React DOM. This extension has a "Profiler" UI which measures render performance for React components. I recently added screen captures to this Profiler so that it can show images of the DOM each time React updates it.
To do this, the extension calls chrome.tabs.captureVisibleTab in response to a request from the DevTools extension UI. (This request is made each time React commits changes to the DOM.)
I've required the <all_urls> permission for now, based on the documentation for this API, which says:
You must have the <all_urls> permission to use this method. (Alternately, Chrome allows use of this method with the activeTab permission and a qualifying user gesture).
(The Chrome documentation for this API doesn't mention either way.)
In my experience, I am able to capture the screen after updates caused by e.g. clicking on an anchor element. However, other types of updates (e.g. "scroll" events, programmatically calling click() on an element) fail with an the following error being logged to the background script:
Unchecked runtime.lastError: Cannot access contents of url "". Extension manifest must request permission to access this host.
Is the documentation wrong about this API? Have I defined my permissions incorrect? Any help would be appreciated!

WKWebView - replace web action

Inside my app, I'm using the WKWebView to display a website. My goal is, when user is pressing a button on this website, I want to stop an action linked to this event and replace it with my own, natively made (custom action outside the WKWebView). I've been trying to search for any solution to fetch mentioned event but unsuccessful. What more came to my mind, if there is a way to fetch a JavaScript in WKWebView, I have a possibility to add some JS script code to this site (not to delete the action I want to block). Thank you for any help.
First, do you have a permission to mess with this web site's behaviour? I assume you do, otherwise it is likely illegal.
Second, try using Safari Web Inspector with a device/simulator, and use the DOM tree and console tools to find out what is the HTML/javascript that is involved with this action on this site.
If you can't find what happens in HTML/JS yourself, feel free to post a new separate question on SO with your target URL, some HTML/JS code, and which link/action you want to replace. Tag the question with "javascript" and ask if it is possible to write some javascript to replace that particular action to some custom JS code.
Usually there are 2 types of actions: either it is something that provokes AJAX calls to a server API triggered by an event handler, or it is a plain HTML link that results in a web navigation. For both cases it is possible to write a JS script that overrides the action.
Finally, use WKUserScript to inject javascript into the page, and override the action. Use window.webkit.messageHandlers to send an event from your custom action to the app side. Use WKScriptMessageHandler to process the event in the Objective-C or Swift code.
See an example here: http://nshipster.com/wkwebkit/

Rest API calls with PowerApps

I am playing around with Microsoft PowerApps and Microsoft Flow. I am trying to figure out how to make API calls from PowerApps and return the results(Status and Body) to a field such as a text box in my app.
I can make the HTTP requests through Flow and put them in a static file such as an excel spreadsheet...etc. I can also make the calls from a PowerApps control such as a button but all I know how to do with it is return it to something like an excel file, when really I want to return it to a Text Box or Text Area.
Today you cannot access the raw HTTP status/body from a PowerApp. The way to call "arbitrary" HTTP endpoints is to use Custom APIs that you can describe using Swagger. I wrote a quick blog on how to call Azure functions that shows how to craft a swagger to call the API: https://powerapps.microsoft.com/en-us/blog/using-azure-functions-in-powerapps/
Might be good if you could clarify the specific scenario you are trying to build to see if there are other ways, but one option that comes to mind is to build a custom API that receives the URL and on the server-side performs the HTTP request and returns the values in an object that then you can easily access in PowerApps.
It is relatively straightforward to visualize API (JSON) responses using a PowerApps Gallery Control.
Do this:
Ensure the Flow has the correct JSON response before proceeding
Add ClearCollect(colResponse, myFlow.apiRequest()) Function to a Button Control in the PowerApp
Execute the API call (click the button)
Inspect colResponse (View/Collections) to ensure it has content
Insert a blank Gallery Control
Set its Items Property to colResponse
Insert a TextBox Control into the Gallery
Set its Text Property to ThisItem.<someColumn>
Depending on the shape of your JSON response (flat or nested table), you may have to do some wrangling.
There are 3 areas to focus your wrangling:
On the ClearCollect Function.
a. Add some dot notation to the end of this to "dig" into the API response before it hits the Gallery Control
b. Example: ClearCollect(colResponse, myFlow.apiRequest()).someColumn
On the Gallery Control Items Property
a. Add some dot notation to the end of colResponse to "dig" into the Collection
b. Example: colResponse.someColumn
On the TextBox Control within the Gallery
a. Add the First() Function to the Text Property
b. Example: `First(ThisItem.someColumn).someColumn2'
c. Note: There are some JSON schemas that require MULTIPLE First()'s to "dig" into the correct level. First(First(ThisItem.someColumn).someColumn2).someColumn3 etc.
See this video for tips on visualizing API responses in PowerApps Galleries.

How to do a listener on every page load

I'm trying to limit the session access to a Struts application so the users will only be able to use 1 tab at the time. To do this, I have to create an ID everytime a new page is loaded and assign that ID to the user's session. By doing so, if the user uses a page with a different ID than the one registered in his session, the action will be rejected.
How can I do a listener on every page load? Which interface should I use?
Or do you have any other idea of how I could manage multiple tabs?
I'm Using Struts 1 and Java 4.
You could use Spring MVC Interceptors and override the preHandle method.
Returning false inside should cancel your request for not allowed additional tabs.
You can use an interceptor to do this. You will need to define it on your interceptor stack in your struts.xml and code the interceptor to check the JEE role information provided by your web application server. The interceptor can be coded to give a redirect result on the other tab if there was recently an action called however you will probably need to coordinate it via JS generated ids and AJAX.
https://struts.apache.org/docs/interceptors.html

Best way to create user notifications on webpage in ASP.NET MVC 4 Razor

tl:dr -> User notification system on website. Can you avoid the need to call a javascript script to render notifications after ajax loads? (a base view that calls it would work, but there are no base views afaik)
I am looking for a way to add a User Notification System to my website. Such system would be responsible for displaying messages like 'Import success', 'Import failed', 'Session timed out' etc.
I know similar questions have been answered before, but here's my question:
How should I do it to get as close as possible to having the notifications display themselves as soon as possible after being put to TempData? Having them rendered on _layout page would work, but only for requests that ask for whole page. What about loading only parts of website through ajax -> can I avoid having to write JS script in ajax callbacks or partial views?
I am looking for something to prevent writing multiple calls to same function.
Toastr is your notification Friend. Demo Page
you can install it from Nuget Install-Package toastr
See my SO question - for reference