Getting an Access Token Without User Login in Facebook Graph API?

自古美人都是妖i 提交于 2019-12-12 09:42:19

问题


I am working with facebook graph api rsvp_event. I am using javascript SDK. Everything works great when the user is logged in. But when the user is not logged in, it gives an error.

I need information about who is attending a public event. I now understand that I would need an access token to retrieve this information. So, my question is how do I get the access token if no user is logged in? Is it impossible or is there a workaround? Could it be done server side using app_id and client_secret?

I am developing a ColdFusion page, but I can use PHP if needed. I have support for both.

I have heard the term *offline_access_permission*. They have removed this feature. Could it be done when it was still available?

EDIT:

Could this be achieved by test user? Say, on server side I login via test user, get the event information (Just a "get" request to read who is attending an event) and then log off. On the client side I do the rest ( user login, rsvp to an event).

I don't know much about "test user" or its purpose. Can anyone confirm whether this can be achieved or not?

Thanks in advance.


回答1:


Are you sure you actually need the user's access token? According to documentation here you may need:

- a generic access_token for public events (those whose privacy is set to OPEN)
- a user access_token for a user who can see the event for non-public events
- an app access_token (for non-public events, must be the app that created the event)
- a page access_token (for non-public events, must be the page that created the event)

You can get info on how to get those tokens here https://developers.facebook.com/docs/concepts/login/access-tokens-and-types/

A good idea could be to store the attending users (in the DB) when you have access to the event - when some user is logged in.

UPDATE for getting the data from FileContent.

I don't know what API response exactly you are referring to, but from my experience they are returning data: - serialized using JSON - you need to use DeserializeJSON(), for example like this:

local.returnStruct = DeserializeJSON( local.requestResult.FileContent );

or

local.returnStruct = DeserializeJSON( local.requestResult.FileContent.toString() );
  • send as something similar to URI. I'm using a function to get that data:

    function getStructFromQueryString( queryString ) {
        var ret = StructNew();
        var i = 0;
        var key = '';
    
        for(i=1; i LTE ListLen(arguments.queryString,'&'); i++) {
            key = ListGetAt(arguments.queryString, i, '&');
            ret[ListFirst(key,'=')] = URLDecode(ListLast(key,"="));
        }
    
        return ret;
    }
    



回答2:


Basically what you want is a refresh token that can get access tokens when the user is offline, unfortunately facebook does not provide them anymore as far as i know.

To learn more about oauth2 pleas play around with https://developers.google.com/oauthplayground/ its a very nice tool to understand the oauth2 process.



来源:https://stackoverflow.com/questions/14449927/getting-an-access-token-without-user-login-in-facebook-graph-api

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!