Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Facebook帐户取消Facebook应用程序的链接或取消其权限,并检查从Facebook应用程序链接的状态_Facebook_Facebook Graph Api_Web_Facebook Fql_Facebook Php Sdk - Fatal编程技术网

Facebook帐户取消Facebook应用程序的链接或取消其权限,并检查从Facebook应用程序链接的状态

Facebook帐户取消Facebook应用程序的链接或取消其权限,并检查从Facebook应用程序链接的状态,facebook,facebook-graph-api,web,facebook-fql,facebook-php-sdk,Facebook,Facebook Graph Api,Web,Facebook Fql,Facebook Php Sdk,我的网站应用程序具有Facebook登录功能。并且我的应用程序出现在Facebook上。使用facebook登录正常 但该应用程序具有将facebook帐户链接到facebook应用程序并将其取消链接的功能 如何检查FB账户是否与特定FB应用链接? 以及如何从特定的FB应用程序断开FB帐户链接,如果该用户的请求链接? 链接意味着我们选择允许FB应用程序按请求运行这可以通过简单的FQL查询轻松实现: SELECT uid FROM user WHERE uid = {USER_ID_HERE} A

我的网站应用程序具有Facebook登录功能。并且我的应用程序出现在Facebook上。使用facebook登录正常

但该应用程序具有将facebook帐户链接到facebook应用程序并将其取消链接的功能

如何检查FB账户是否与特定FB应用链接? 以及如何从特定的FB应用程序断开FB帐户链接,如果该用户的请求链接?
链接意味着我们选择允许FB应用程序按请求运行

这可以通过简单的FQL查询轻松实现:

SELECT uid FROM user WHERE uid = {USER_ID_HERE} AND is_app_user = true
这将返回用户的uid,如果用户与应用程序连接,则不会返回任何内容,否则将使用您的API调用/{user_ID}/权限,并显示该用户是否已授权您的应用程序

如果您有用户的访问令牌,也可以使用该令牌进行检查

响应类型如下所示:

{
  "data": [
    {
      "installed": 1, 
      "bookmarked": 1
    }
  ] 
}
对于用户授予你的应用程序的每个扩展权限,都会有一个条目,安装行表示他们已经安装了你的应用程序

对于尚未安装您的应用程序的用户,响应将为:

 {
   "data": [  
   ]
 }

您还可以使用FQL,正如Juicy Scripter在另一个答案中所建议的那样,通过Graph API,从Thank@DMCS:

您可以取消对应用程序的授权或吊销特定的扩展证书 通过向用户发出HTTP DELETE请求来代表用户授予权限 使用该应用的用户访问令牌配置文件\u ID/权限

RESTAPI为您提供auth.revokeAuthorization。你可以在网上看到更多关于这方面的信息

请注意,RESTAPI将在将来被弃用,尽管Facebook没有指定确切的时间


我不知道有什么方法可以获得一个特定用户所连接的应用程序列表,也不知道Facebook会提供这些应用程序的任何原因。要查看用户是否连接到您的应用程序,此处的其他答案应为您提供一些想法。

对于新的图形,有一种记录在案的取消授权方法,我已在图形API资源管理器中对其进行了测试,效果良好。使用有效的访问令牌向我/权限发送HTTP Delete命令。它不仅会使访问令牌无效,还会将应用程序从用户的授权应用程序列表中删除。这需要用户通过权限屏幕再次授权应用程序以使用它。快乐编码

请注意,Facebook正在弃用REST API,并为auth.revokeAuthorization方法向Graph API用户对象添加了等效的支持

//$this->facebook is facebook object
//$userid is of logged in user or can be written hardcoded.
For checking linked in or not by making api call.

        $user_id = $this->facebook->getUser();
        $result = $this->facebook->api(array(
                'method' => 'fql.query',
                'query' => "SELECT is_app_user FROM user WHERE uid=$user_id"
        ));
        $is_installed = $result[0]['is_app_user'];
        if($is_installed==1) {
            echo 'Linked';
        }
        else {
            echo 'Not Linked';
        }


For delinking or deauthorization the user by making app call:

        $user_id = $this->facebook->getUser();
        $access_token=$this->facebook->getAccessToken();
        $result = $this->facebook->api(array(
                'method' => 'auth.revokeAuthorization',
                'uid' =>$user_id,
                'access_token'=>$access_token
        ));

以下是如何使用Facebook iOS SDK v4取消应用程序的授权:

#import <FBSDKCoreKit/FBSDKCoreKit.h>

...

NSString *graphPath = [NSString stringWithFormat:@"/%@/permissions", [FBSDKAccessToken currentAccessToken].userID];
[[[FBSDKGraphRequest alloc] initWithGraphPath:graphPath parameters:nil HTTPMethod:@"DELETE"]
    startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
    if ( !error ) {
        NSLog(@"Facebook unlinked");
    }
}];

您可以使用应用访问令牌向/{USER_ID}/权限发出删除请求。这是旧的auth.revokeAuthorization调用的替换,将卸载该用户的应用程序如何发出此删除请求。请你详细说明一下,我不确定我能不能进一步简化它;如果您的SDK或代码无法发出HTTP DELETE REQUESTS,请将HTTP GET和include&method=DELETE作为GET参数来“伪造”删除请求。实际上,对于新的图形,有一种记录在案的方法来取消授权。我已经在图形API资源管理器中对其进行了测试,它可以正常工作。使用有效的访问令牌向我/权限发送HTTP Delete命令。它不仅会使访问令牌失效,还会从用户的身份验证应用列表中删除该应用。您能简要介绍一下吗?我试图调用该方法,但失败了。新年快乐。你需要知道什么?这是一个HTTP删除请求,所以获取一个有效的访问令牌并使用cURL,比如cURL-X DELETEhttps://graph.facebook.com/PROFILE_ID/permissions?access_token=ACCESS_TOKENBTW,也可以是GET或POST请求,参数方法等于delete。@Júlio Santos:如何使用curl?在哪里调用该url?如何使用有效的访问令牌向我/权限发送HTTP Delete命令?使用Facebook PHP SDK,您可以使用getAccessToken创建url:/me/权限?访问令牌=???哪里是访问令牌。然后,您需要使用类似cURL的东西来更改HTTP谓词以删除并发出该请求。