Hi team, I'm from the github. I have a
# spicedb
c
Hi team, I'm from the github. I have a grpc request id, could you help take a look? I invoked the grpc.authzed.com:443 aac0d285-347b-4b5a-97c8-df69269e2400 below are my code, it returns error
Copy code
{
  code: 14,
  details: 'Connection dropped',
  metadata: Metadata { internalRepr: Map(0) {}, options: {} }
}
Copy code
const { v1 } = require('@authzed/authzed-node');
const client = v1.NewClient(
  'token'
);
const main = async () => {
  const referenceId = 'vcdZovFfQE6oOGZqTkWOqw+version=3';
  const referenceType = 'version';
  const request = v1.LookupSubjectsRequest.create({
    resource: v1.ObjectReference.create({
      objectType: `meta_permission/version`,
      objectId: referenceId
    }),
    permission: 'can_view',
    subjectObjectType: `meta_permission/user`,
    consistency: v1.Consistency.create({
      requirement: {
        oneofKind: 'fullyConsistent',
        fullyConsistent: true
      }
    })
  });
  const ret1 = await new Promise((resolve, reject) => {
    client.lookupSubjects(request, (err, response) => {
      if (err) reject(err);
      resolve(response);
    });
  });
  console.log(JSON.stringify(ret1));
  console.log(JSON.stringify(ret1));
};

main()
  .then(() => {})
  .catch((err) => {
    console.log(err);
  });
cc: @vroldanbet
I can invoke
expandPermissionTree
success
v
Where are you based? Authzed Serverless is not globally replicated, so the Datacenter is in US
I suspect night latency making your request time out
Also note full consistency is not recommended as it bypasses the caches
c
I can invoke expandPermissionTree success
Can you share your email, and I can share my token for you
I think the SDK may be has a bug. I use the golang sdk, it works fine.
Copy code
package main

import (
    "context"
    "log"

    "github.com/authzed/authzed-go/proto/authzed/api/v1"
    "github.com/authzed/authzed-go/v1"
    "github.com/authzed/grpcutil"
)

func main() {
    //emilia := &v1.SubjectReference{Object: &v1.ObjectReference{
    //    ObjectType: "blog/user",
    //    ObjectId:   "emilia",
    //}}
    //
    //firstPost := &v1.ObjectReference{
    //    ObjectType: "blog/post",
    //    ObjectId:   "1",
    //}
    resource := &v1.ObjectReference{
        ObjectType: "meta_permission/version",
        ObjectId:   "vcdZovFfQE6oOGZqTkWOqw+version=3",
    }
    consistency := &v1.Consistency{
        Requirement: &v1.Consistency_MinimizeLatency{
            MinimizeLatency: true,
        },
    }
    withSysCerts, err := grpcutil.WithSystemCerts(grpcutil.VerifyCA)
    if err != nil {
        log.Fatalf("error creating system certs: %v", err)
    }
    client, err := authzed.NewClient(
        "grpc.authzed.com:443",
        withSysCerts,
        grpcutil.WithBearerToken("token"),
    )
    if err != nil {
        log.Fatalf("unable to initialize client: %s", err)
    }
    resp, err := client.LookupSubjects(context.Background(), &v1.LookupSubjectsRequest{
        Resource:          resource,
        Permission:        "can_view",
        SubjectObjectType: "meta_permission/user",
        Consistency:       consistency,
    })
    //resp, err := client.CheckPermission(context.Background(), &v1.CheckPermissionRequest{
    //    Resource:   firstPost,
    //    Permission: "read",
    //    Subject:    emilia,
    //})
    if err != nil {
        log.Fatalf("failed to check permission: %s", err)
    }
    log.Println(resp)
}
v
I think the difference is lookup resources is a streaming API, whereas expand is an unary grpc API. We've had troubles in the past with the node SDK due to bugs in the proto library. What version of the SDK are you using?
c
@authzed/authzed-node 0.15.0
I resolved it
Copy code
const { promises: client } = v1.NewClient(
  ''
);
  const res = await client.lookupSubjects(request, new grpc.Metadata(), {});
20 Views