gpt4 book ai didi

java - Deezer SDK for Android,如何将 access_token 提供给 DeezerRequest?

转载 作者:行者123 更新时间:2023-12-02 06:58:05 25 4
gpt4 key购买 nike

我正在使用 JAVA Android SDK 开发 Deezer 应用程序。我已经成功使用 Deezer 方法登录(出现一个弹出窗口,允许用户使用他的 deezer 或 Facebook 帐户登录)。

但现在我想访问用户数据(名称/ID ...)以供将来使用。我目前正在使用

DeezerRequest request_name = new DeezerRequest("/user/me");

但是应用程序抛出异常,请求 access_token。我有它,但我不知道如何将它提供给请求(并且 deezer 开发网站并没有真正的帮助,因为他假设你知道如何处理它)

如果有帮助,我可以发布更多代码。感谢您的帮助。

最佳答案

正确登录后,这是我使用的代码(取自 sdk zip 文件中的示例 Deezer 应用程序)

在您的 Activity 中:

private RequestListener userRequestListenerHandler = new UserRequestHandler();

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

....

searchUser();
}

public void searchUser(){

AsyncDeezerTask searchAsyncUser = new AsyncDeezerTaskWithDialog(this, deezerConnect, userRequestListenerHandler);
DeezerRequest request = new DeezerRequest("user/me");
searchAsyncUser.execute(request);

}

public void searchUserFinish(User user) {
// TODO Auto-generated method stub
String name = user.getFirstname();
Sring lastname = user.getLastname();
//... other user data
}


private class UserRequestHandler implements RequestListener{

@Override
public void onComplete(String response, Object arg1) {
// TODO Auto-generated method stub

try{


User user = new DeezerDataReader<User>(User.class).read(response);

searchUserFinish(user);

}catch (IllegalStateException e){
handleError(e);
e.printStackTrace();
}

}

@Override
public void onDeezerError(DeezerError e, Object arg1) {
// TODO Auto-generated method stub
handleError(e);
}

@Override
public void onIOException(IOException e, Object arg1) {
// TODO Auto-generated method stub
handleError(e);
}

@Override
public void onMalformedURLException(MalformedURLException e,
Object arg1) {
// TODO Auto-generated method stub
handleError(e);

}

@Override
public void onOAuthException(OAuthException e, Object arg1) {
// TODO Auto-generated method stub
handleError(e);
}

}

public void handleError(Error e){
Toast.maketext(this,e,Toast.Length_Short).show();
}

异步 ​​DEEZER 任务

public class AsyncDeezerTaskWithDialog extends AsyncDeezerTask {
/** Progress dialog to show user that the request is beeing processed. */
private ProgressDialog progressDialog;

/**
* Simply creates an Deezer task with a dialog.
* @param context the context used to create the dialog into.
* @param deezerConnect the DeezerConnect object used to connect to Deezer web services.
* @param listener the request listener.
*/
public AsyncDeezerTaskWithDialog(Context context, DeezerConnect deezerConnect,
RequestListener listener ) {
super(deezerConnect, listener );
progressDialog = new ProgressDialog( context );
progressDialog.setCancelable( true );
progressDialog.setOnCancelListener( new OnCancelHandler() );
}//met

@Override
protected void onPreExecute() {
progressDialog.setMessage( "Contacting Deezer..." );
progressDialog.show();
super.onPreExecute();
}//met

@Override
public void onPostExecute( String s ) {
//http://stackoverflow.com/questions/2745061/java-lang-illegalargumentexception-view-not-attached-to-window-manager
try {
if( progressDialog.isShowing() ) {
progressDialog.dismiss();
}//if
} catch (IllegalArgumentException e) {
//can happen sometimes, and nothing to get against it
}//catch
super.onPostExecute( s );
}//met

@Override
protected void onCancelled() {
//http://stackoverflow.com/questions/2745061/java-lang-illegalargumentexception-view-not-attached-to-window-manager
try {
if ( progressDialog.isShowing() ) {
progressDialog.dismiss();
}//if
} catch (IllegalArgumentException e) {
//can happen sometimes, and nothing to get against it
}//catch
super.onCancelled();
}//met

private class OnCancelHandler implements OnCancelListener {
@Override
public void onCancel(DialogInterface dialog) {
cancel( true );
}//met
}//inner class
}//class

DEEZER 数据读取器类

public class DeezerDataReader<T extends Object> {

/** Class to pass to the Gson parser to create POJOs. */
private Class<T> clazz = null;

/** Creates a reader.
* @param clazz class to pass to the Gson parser to create POJOs.
* */
public DeezerDataReader( Class<T> clazz ) {
if( clazz == null ){
throw new IllegalArgumentException( "Clazz can't be null." );
}//if
this.clazz = clazz;
}//cons

/**
* DAO method to read (deserialize) data from a json string.
* @param json the json string to deserialize.
* @return a list of typed data from Deezer. The list can't be null, but may be empty.
* @throws IllegalStateException if the parser encounters an error in json format.
*/
public T read( String json ) throws IllegalStateException {
Gson gson = new Gson();
JsonObject object = new JsonParser().parse(json).getAsJsonObject();
return gson.fromJson( object, clazz );
}//met

}//met

关于java - Deezer SDK for Android,如何将 access_token 提供给 DeezerRequest?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17045601/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com