【问题标题】:Android studio Youtube API error 401 unauthorisedAndroid studio Youtube API 错误 401 未经授权
【发布时间】:2017-11-28 02:10:16
【问题描述】:

我目前正在 android studio 中开发 Youtube-API。 API 在浏览器中运行良好,但我在 android studio 中面临 2 个问题。这些是: 1) API 在获取数据时出错。然后我需要再次启用它,然后它才能再次工作。为什么 ? 2) 当我的 API 即使在浏览器中也能正常工作时,我会收到 error 401 Unauthorized。

下面是我的界面代码:

public interface APInterface {
    @Multipart
    @POST("/playlistItems?part=snippet&playlistId=PLcVfz1-_0rj93LJZjzOHE6phn25MUK4lt&key=AIzaSy*****************&maxResults=50")
    void getData(@Part("") String name,Callback<Result> callback);
}

MainActivity.java 文件是:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        RestAdapter restAdapter = new RestAdapter.Builder().setEndpoint(Constant.url).build();
        APInterface apInterface = restAdapter.create(APInterface.class);
        apInterface.getData("",new Callback<Result>() {
            @Override
            public void success(Result result, Response response) {
                Toast.makeText(MainActivity.this, "Success!", Toast.LENGTH_SHORT).show();
            }
            @Override
            public void failure(RetrofitError error) {
                Toast.makeText(MainActivity.this,"Failure!"+error.getMessage(),Toast.LENGTH_SHORT).show();
                Log.e("Error:",""+error.getMessage());
            }
        });
    }
}

我正在使用改造 1.9 和互联网许可和 gradle 是好的。请帮忙。

【问题讨论】:

  • 您能否尝试在您的 API 密钥限制中指定您将其用于“Android 应用程序”而不是“HTTP 引荐来源网址”。或者将其设置为“无”,看看会发生什么。 api-error-401-unauthorized
  • 先生,我尝试了 None 和 Android 应用程序 键限制,但问题始终相同。

标签: android youtube-api retrofit youtube-data-api


【解决方案1】:

我也遇到了类似的问题,我通过从 Retrofit 中删除 Authorization header 来解决它。试试这个

OkHttpClient.Builder client = new OkHttpClient.Builder()
                .connectTimeout(5, TimeUnit.MINUTES)
                .retryOnConnectionFailure(true)
                .readTimeout(5, TimeUnit.MINUTES);
        client.addInterceptor(httpLoggingInterceptor);
        //client.addInterceptor(new AuthTokenInterceptor(sessionManager));

【讨论】:

  • 您好 @JeffreyRajan 先生,使用 OkHttpClient 获取数据并不可取。上述方法适用于其他 API,无需使用任何转换器和 OkHttpClient。另外,请包含更多关于授权标头的代码。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-05-06
  • 2019-02-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-09
  • 2019-06-28
  • 1970-01-01
相关资源
最近更新 更多