Android AccountKit.getCurrentAccount返回“来自服务器的API调用需要appsecret_proof参数”

时间:2016-04-16 20:07:20

标签: android facebook android-facebook

我正在尝试Facebook AccountKit,如下所示:https://developers.facebook.com/docs/accountkit/android/integrating

我用:

启动了AccountKitAcitivity
public class CaesarStream : Stream
{
    private int _offset;
    private FileStream _stream;

    public CaesarStream(FileStream stream, int offset)
    {
        _offset = offset;
        _stream = stream;
    }
    public override int Read(byte[] array, int offset, int count)
    {
        //I imagine i need to call 
        //_stream.Read(array, offset, count);
        //and modify the array, but how do i make my stream return it afterwards?
        //I have no access to the underlying private FileStream fields so I'm clueless
    }
    public override void Write(byte[] buffer, int offset, int count)
    {
        byte[] changedBytes = new byte[buffer.Length];

        int index = 0;
        foreach (byte b in buffer)
        {
            changedBytes[index] = (byte) (b + (byte) _offset);
            index++;
        }

        _stream.Write(changedBytes, offset, count);
    }
}

在我结束时使用“已验证”完成SMS登录流程后,当我在我的活动中调用AccountKit.getCurrentAccount(...)时,我收到“来自服务器的API调用需要appsecret_proof参数”错误。< / p>

这只能通过将“App Secret Proof for Server API调用”关闭来“解决”。这会让我的应用不那么安全......有什么建议吗?

1 个答案:

答案 0 :(得分:0)

如果将“启用客户端访问令牌流”设置为true,则只会在登录流结束时返回代码。您还需要设置ResponseType.CODE。然后,您可以将其替换为服务器上的令牌。

如果您将“Require app secret”设置为true,则只能从服务器调用/ me(以及其他一些)。 getCurrentAccount实际上包装/ me端点,然后无法调用。