Facebook publish_actions被批准但被授权只为我显示了publish_actions

时间:2016-03-22 11:57:04

标签: facebook facebook-graph-api

我有一个有趣的问题。 我的FB Canvas游戏处于开发模式,我获得了publish_actions批准。当我在浏览器中启动我的游戏时,我会在登录我的帐户时获得授权范围列表,它会正确列出publish_actions并且一切正常,但是当我的一个测试人员(我已经让测试人员在fb dev控制台中滚动)时会加载。然后它不会在grantScopes下列出publish_actions。 难道我做错了什么? 我是否需要请求用户以某种方式接受此新权限?

这是我的fblogin代码

using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using Facebook.Unity;
using UnityEngine.UI;
using System;

public class FBLogin : MonoBehaviour {

void Awake()
{
    FB.Init (SetInit, OnHideUnity);
}

private void SetInit()
{

    Debug.Log ("FB Init done.");

    if (FB.IsLoggedIn)
    {
        Debug.Log ("FB Logged In.");
    }else{
        Debug.Log("FB NOT Logged In.");
    }
}

private void OnHideUnity(bool isGameShown)
{
    if(!isGameShown)
    {
        Time.timeScale = 0;
    }else{
        Time.timeScale = 1;
    }
}

public void FBlogin ()
{
    var perms = new List<string>(){"public_profile", "email",};
    FB.LogInWithPublishPermissions(perms, AuthCallback);
}

private void AuthCallback (ILoginResult result) 
{
    Debug.Log(result.RawResult);
    if (FB.IsLoggedIn) 
    {

        var aToken = Facebook.Unity.AccessToken.CurrentAccessToken;
        // Print current access token's User ID
        Debug.Log(aToken.UserId);
        // Print current access token's granted permissions
        foreach (string perm in aToken.Permissions) {
            Debug.Log(perm);
        }
    } else {
        Debug.Log("User cancelled login");

    }
}
}

谢谢你们。

1 个答案:

答案 0 :(得分:1)

您请求的权限不是发布权限,而是读取权限。您需要使用

FB.LogInWithReadPermissions(new List<String>(){"public_profile", "email"}, AuthCallback)

使用请求的读取权限登录。一旦您的回叫触发,您将需要提交第二个请求:

FB.LogInWithPublishPermissions(new List<String>(){"publish_actions"}, AuthCallback)

您无法将同一请求对话框的读取和发布权限组合到最终用户。在用户实际尝试从您的应用中发布内容之前,最好不要再连续打开两个对话框,而是暂停请求发布权限。