Java Deezer SDK for Android,如何向Deezer请求授予访问令牌?
我正在使用JavaAndroidSDK开发Deezer应用程序。 我已经设法用Deezer方法登录(出现一个弹出窗口,允许用户使用他的Deezer或facebook帐户登录) 但现在我想访问用户数据(名称/id…),以备将来使用。我目前正在使用Java Deezer SDK for Android,如何向Deezer请求授予访问令牌?,java,android,deezer,Java,Android,Deezer,我正在使用JavaAndroidSDK开发Deezer应用程序。 我已经设法用Deezer方法登录(出现一个弹出窗口,允许用户使用他的Deezer或facebook帐户登录) 但现在我想访问用户数据(名称/id…),以备将来使用。我目前正在使用 DeezerRequest request_name = new DeezerRequest("/user/me"); 但是应用程序抛出一个异常,请求访问令牌。我有它,但我不知道如何将它提供给请求(deezer开发站点并没有真正的帮助,因为他假设您知道
DeezerRequest request_name = new DeezerRequest("/user/me");
但是应用程序抛出一个异常,请求访问令牌。我有它,但我不知道如何将它提供给请求(deezer开发站点并没有真正的帮助,因为他假设您知道如何处理它)
如果有帮助的话,我可以发布更多的代码。
感谢您的帮助。正确登录后,这是我使用的代码(取自sdk zip文件中的Deezer示例应用程序) 在您的活动中:
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 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
公共类DeezerDataReader{
/**类传递给Gson解析器以创建POJO*/
私有类clazz=null;
/**创建一个阅读器。
*@param clazz类传递给Gson解析器以创建POJO。
* */
公共DeezerDataReader(类clazz){
if(clazz==null){
抛出新的IllegalArgumentException(“Clazz不能为null”);
}//如果
this.clazz=clazz;
}//缺点
/**
*DAO方法从json字符串读取(反序列化)数据。
*@param json要反序列化的json字符串。
*@从Deezer返回类型化数据列表。列表不能为空,但可以为空。
*如果解析器遇到json格式的错误,@将抛出IllegalStateException。
*/
公共T读取(字符串json)引发IllegalStateException{
Gson Gson=新的Gson();
JsonObject object=new JsonParser().parse(json.getAsJsonObject();
返回gson.fromJson(对象,clazz);
}//遇见
}//遇见
太好了,有人帮我将访问令牌链接到deezerConnect:
/** DeezerConnect object used for auhtentification or request. */
private DeezerConnect deezerConnect = new DeezerConnectImpl(APP_ID);
//----
deezerConnect.setAccessToken(getApplicationContext(), access_token);
访问令牌是通过以下方式获得的:
deezerConnect.authorize(MainActivity.this, PERMISSIONS,
new LoginDialogHandler());
//----
private class LoginDialogHandler implements DialogListener {
@Override
public void onComplete(final Bundle values) {
MainActivity.access_token = values.getString("access_token");
}
//----
}
不,还是相同的问题:/06-12 10:33:13.710:W/userRequesthandler/onOAuthException(4558):com.deezer.sdk.OAuthException:msg=必须使用活动访问令牌来查询有关当前用户的信息,type=,code=0我想我必须向deezerConnect添加一些内容(通过捆绑包或其他方式)但是我不知道在没有用户交互的情况下,我们可以自动登录到deezer的什么以及如何登录?
deezerConnect.authorize(MainActivity.this, PERMISSIONS,
new LoginDialogHandler());
//----
private class LoginDialogHandler implements DialogListener {
@Override
public void onComplete(final Bundle values) {
MainActivity.access_token = values.getString("access_token");
}
//----
}