【问题标题】:Watson Visual Recognition - Unauthorized: Access is denied due to invalid credentialsWatson Visual Recognition - 未经授权:由于凭据无效,访问被拒绝
【发布时间】:2020-03-05 18:09:58
【问题描述】:

我按照 rebook (http://www.redbooks.ibm.com/redbooks/pdfs/sg248393.pdf) 中的步骤启动了一个小型 Java 应用程序。 我还按照他们的描述创建了一个 API 密钥。

现在我收到 Unauthorized: Access is denied due to invalid credentials 消息。

package vrproject;

//Here you import Watson Java SDK to make it available in your code. 
import com.ibm.watson.developer_cloud.visual_recognition.v3.*;
import com.ibm.watson.developer_cloud.visual_recognition.v3.model.*;

public class ClassifyImage {

public static void main(String[] args) {
    // TODO Auto-generated method stub
    VisualRecognition service = new VisualRecognition(VisualRecognition.VERSION_DATE_2016_05_20); 
    service.setEndPoint("https://gateway.watsonplatform.net/visual-recognition/api");

    //Here you replace "your_api_key_here" by the API Key you created in "Creating 
    //a Watson Visual Recognition service instance and getting the API key"
    service.setApiKey("123apikey");

    //Here you add the URL of your image. The image size should not exceed 2MB.
    String imageURL = new
    String("https://raw.githubusercontent.com/watson-developer-cloud/doc-tutorial-downloads/master/visual-recog nition/fruitbowl.jpg");
    ClassifyImagesOptions options = new ClassifyImagesOptions.Builder().url(imageURL).build(); 
    VisualClassification result = service.classify(options).execute(); System.out.println("Classification Results:");
    System.out.println(result);
}

}

错误信息:

    Mär 05, 2020 7:02:23 PM com.ibm.watson.developer_cloud.service.WatsonService processServiceCall
SCHWERWIEGEND: POST https://gateway.watsonplatform.net/visual-recognition/api/v3/classify?version=2016-05-20&api_key=123apikey, status: 401, error: Unauthorized
Exception in thread "main" com.ibm.watson.developer_cloud.service.exception.UnauthorizedException: Unauthorized: Access is denied due to invalid credentials
    at com.ibm.watson.developer_cloud.service.WatsonService.processServiceCall(WatsonService.java:418)
    at com.ibm.watson.developer_cloud.service.WatsonService$1.execute(WatsonService.java:180)
    at vrproject.ClassifyImage.main(ClassifyImage.java:22)

你知道我为什么会收到这些错误吗? 我不确定是不是版本太旧了,我只是用了书上的那个。

【问题讨论】:

    标签: java ibm-watson


    【解决方案1】:

    红皮书于 2017 年发布,其显示的身份验证机制现已过时,其使用的 SDK 已被弃用。您需要根据当前的 API 文档修改您的代码:https://cloud.ibm.com/apidocs/visual-recognition/visual-recognition-v3?code=java#classify-images

    编写示例代码时的位置

    IamAuthenticator authenticator = new IamAuthenticator("{apikey}");
    VisualRecognition visualRecognition = new VisualRecognition("2018-03-19", authenticator);
    visualRecognition.setServiceUrl("{url}");
    
    InputStream imagesStream = new FileInputStream("./fruitbowl.jpg");
    ClassifyOptions classifyOptions = new ClassifyOptions.Builder()
      .imagesFile(imagesStream)
      .classifierIds(Arrays.asList("food"))
      .build();
    ClassifiedImages result = visualRecognition.classify(classifyOptions).execute().getResult();
    System.out.println(result);x
    

    您的 SDK 依赖项将在哪里

    <dependency>
      <groupId>com.ibm.watson</groupId>
      <artifactId>ibm-watson</artifactId>
      <version>8.3.0</version>
    </dependency>
    
    
    

    【讨论】:

      【解决方案2】:

      您没有使用正确的服务端点。您链接到的文档显示了端点 URL:https://gateway-a.watsonplatform.net/visual-recognition/api

      您正在使用https://gateway.watsonplatform.net/visual-recognition/api

      【讨论】:

        【解决方案3】:

        您可以在 Watson Visual Recognition 服务页面上获取 API_KEYEndpoint

        在凭据下的视觉识别服务管理页面上,您应该会看到

        • API 密钥
        • 网址

        URL 格式是这样的

        https://api.REGION.visual-recognition.watson.cloud.ibm.com/instances/INSTANCEID

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-10-17
          • 1970-01-01
          • 2012-04-20
          • 1970-01-01
          相关资源
          最近更新 更多